以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  为什么输出的结果不一样?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=193435)

--  作者:YUNSEL
--  发布时间:2024/9/13 13:24:00
--  为什么输出的结果不一样?
Output.Show(4.5 * 7.1323)   输出结果是:32.09535
Output.Show(round2(32.09535, 4))    输出结果是:32.0954
Output.Show(round2(4.5 * 7.1323, 4))   输出结果是:32.0953

第二行与第三行写法为何输出结果不一样?

--  作者:有点蓝
--  发布时间:2024/9/13 13:31:00
--  
我也不懂。不过如果对结果准确度要求高的,建议还是使用变量的方式

Dim d As Decimal = 4.5 * 7.1323
Output.Show(d)
Output.Show(round2(d, 4))


--  作者:puma
--  发布时间:2024/9/13 14:09:00
--  
7.1323 在内存里,是一个近似的数?
--  作者:有点蓝
--  发布时间:2024/9/13 14:14:00
--  
计算内部的原理不清楚,也许是精度的问题,类似:http://www.foxtable.com/webhelp/topics/1829.htm
--  作者:YUNSEL
--  发布时间:2024/9/13 15:26:00
--  
我试了,要这样处理:
dim s1 as Decimal = 4.5
dim s2 as Decimal = 7.1323
Output.Show(round2(s1* s2, 4))   输出结果是:32.0954