2016-11-05 42 views
0

真正的類型在Eiffel設置精度,在DOUBLE類型的值做一些操作後,我得到的結果1.9999999999999998,而預期的結果應該是2在艾菲爾

我知道這是由於浮點運算中的不準確造成的。我只需要兩位數的精度(使用DOUBLE類型),因此,如果數字可以四捨五入到兩位數,我認爲結果將如預期的那樣爲2

我看過this的問題,但它只談及顯示兩位數字,而我想知道是否有辦法舍入和存儲兩位數的精度值。

謝謝。

回答

1

DCM遮光板文庫(兩contrib下包括在標準EiffelStudio分佈) - 提供類DECIMALMA_DECIMAL其可以設置爲存儲和使用指定的精度操縱數字。但是,這裏的精度是有效位數的總數,而不是小數點後的數字位數。如果您需要小數點後的指定位數,請改用正確縮放的整數類型。

+0

謝謝。你能告訴我如何使用這些類嗎?它說「錯誤:類型是基於未知的類」,當我試圖從'DECIMAL'繼承。 – GoodDeeds

+0

您需要將相應的庫添加到您的項目中(例如,參見[教程視頻](https://www.youtube.com/watch?v=rfXKFIPFdw8)的第二部分),它位於庫的列表中列爲'decimal'。另外,請注意'DECIMAL'應該被用來代替'REAL_64' /'DOUBLE',所以它不會被繼承,而是被用作供應商。 –