似乎是不可思議,這是不是已經有一個答案的問題的重複,但我無法找到問題或答案所以在這裏我去...VBA司
在VBA,在即時窗口,如果我輸入:
?8/7
我得到的結果是: 1.14285714285714
這要是我再乘以7
給我一個數字,比8略顯不足,即7.99999999999998
。 我的袖珍計算器提供更多小數位,所以它比VBA更好?對? ;-)
但是,如果我添加0.000000000000003
的結果1.142...
之前,我乘我得到8
(其中,順便說一句,也是不正確的);但我的問題是:
我怎樣才能控制答案的精確度相對於爲?8/7
顯示的小數位數的號碼嗎?
我已經看到這個答案與accuracy of floating points有關,但它是一個不同的問題,它解釋了不準確的原因,而我有興趣獲得一些額外的數字。
爲此我試圖寫一個返回雙重功能,但它不會返回足夠的小數位...例如我希望看到:1.142857142857142857
。我還發現引用了一個decimal
數據類型,但我認爲這篇文章是針對VB6(而不是VBA)的,因爲我已經用盡了VBA中的可用數據類型......我錯過了什麼?
Function test() As Double
Dim a As Double
Dim b As Double
Dim c As Double
a = 8
b = 7
c = a/b
test = c
End Function
的[?爲什麼是浮點數不準確(可能的複製https://stackoverflow.com/questions/21895756/why - 浮點數 - 不準確) –
有'Variant'的'Decimal'子類型。 –
見[SO:比較在VBA精度問題雙(https://stackoverflow.com/questions/235409/compare-double-in-vba-precision-problem)和[比較浮點數,2012版(HTTPS: //randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/)和[Wikipedia:Microsoft Excel中的數字精確度](https://en.wikipedia。org/wiki/Numeric_precision_in_Microsoft_Excel)...我很好奇你在做什麼,15個精度點是不夠的? – ashleedawg