2012-05-18 20 views
0

VBScript的數學函數:FormatNumberVBScript中減去十進制值

FormatNumber(4.33 - 4.28, 1, -2, -2, -2) //answer 0.0 
FormatNumber(0.05, 1, -2, -2, -2)  //answer 0.1 

即使

FormatNumber(cdbl(4.33) - cdbl(4.28), 1, -2, -2, -2) //answer 0.0 

FormatNumber(4.34 - 4.28,1,-2,-2,-2) //answer 0.1 

爲什麼不正確舍入?我怎樣才能解決這個問題?

+0

究竟是什麼問題?這個問題是難以辨認的。 –

+0

@CodyGray我想要一個十進制數的共振峯,以便在小數點後有一個數字。但結果值是不同的,你可以在我的問題中看到,雖然'4.33 - 4.28'是'0.05' –

+0

這與你使用浮動的事實有關。 [這](http://classicasp.aspfaq.com/general/why-does-3-2-1-5-4-7000000000000002.html)是我能找到的最好的資源。必須是更好地解釋問題的那些。嘗試以下操作來查看_problem_:'Response.Write 4.33 - 4.28' –

回答

2

計算機中的浮點數只是數學(現實生活中)數字的近似值。

>> WScript.Echo (4.33 - 4.28) 
>> 
4,99999999999998E-02 
>> WScript.Echo 0.5 
>> 
0,5 
>> WScript.Echo CStr(((4.33 - 4.28) = 0.05)) 
>> 
False 

有很多關於如何和爲什麼數字被表示和操縱的解釋;只需使用維基百科或Google即可開始使用。

請參閱one example here(使用xkcd!完成)。