我遇到了計算在我的函數中關閉的問題。我正在使用VB6,這可能是我的第一個問題。發生了什麼是我遍歷一個循環,從一個變量步進到另一個變量,逐步變量,計算每個項目的折扣。它將每個計算得出的折扣放在文本文件查找表中。如果用戶輸入的值在這兩個值之間,那就是它應用的折扣。被設置爲錯誤值的變量
問題出在計算折扣價值。假設我每步每單位折扣0.04美元。因此,第一步的折扣將是.04,然後是.08,然後是.12等。要計算此值,它會計算經過指定範圍的步數,然後將步數乘以每步折扣值。這是主要問題。當我這樣做,我得到一個浮點舍入錯誤。我將總步驟(1)乘以總折扣(.04)並獲得.03999999999999999。
這不會是一個大問題,但是因爲它多次計算出來,並且將計算添加到計算中,所以我不會有這種精度損失,它會在晚些時候丟掉我的值。我如何避免這種舍入錯誤? 另外值得注意的是,我分配的價值是雙打和單打,這是否可以解決問題?
TL; DR:1 * .04 = .03999999999999出於某種原因在VB6中。即使我分配一個浮點變量= 15.1,它也會變成= 15.1000003814697。我將如何去解決這個問題?
嘗試使用十進制數據類型而不是double或single。另外,無處不在地使用它。 –
我應該說你應該在計算中轉換爲十進制。例如:CDec(變量1)* CDec(變量2) –