gpt4 book ai didi

vb.net - double 计算的值不正确

转载 作者:行者123 更新时间:2023-12-02 03:18:27 25 4
gpt4 key购买 nike

我正在VB.Net中进行简单的计算,以下是代码。

Dim total As String = "192.04"
Dim paid As String = "200"
Dim change As String = "7.96"
'//This prints -7.99360577730113E-15 (Incorrect)
MsgBox((CDbl(total) - CDbl(paid)) + CDbl(change))

我从这个计算中期望的答案是 0,但我得到 -7.99360577730113E-15。我不知 Prop 体原因,我不太明白MSDN上解释的原因。任何澄清都会非常有帮助。

我做了一个 Math.Round 到小数点后两位并且​​问题得到了解决,因此我是否需要在使用小数进行计算的所有地方都使用 Math.Round ?

最佳答案

这是因为double(或一般的 float )在内存中的表示方式。您应该使用 decimal 进行财务计算,而不是 double:

double total = 192.04;
double paid = 200;
double change = 7.96;

double result = (total - paid) + change; // -7.99360577730113E-15
decimal total = 192.04m;
decimal paid = 200m;
decimal change = 7.96m;

decimal result = (total - paid) + change; // 0.00

我知道它是 C#,但无论如何你都应该看到区别。

您可以使用Decimal.Parsestring获取decimal:

Dim total As String = "192.04"
Dim paid As String = "200"
Dim change As String = "7.96"

MsgBox((Decimal.Parse(total) - Decimal.Parse(paid)) + Decimal.Parse(change))

关于vb.net - double 计算的值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25468643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com