【发布时间】:2022-01-18 22:53:40
【问题描述】:
我在我的程序中使用了一个 Math.Round 函数,如下所示
Math.Round((ProductWeightByType * 4.18), 2)
这很完美,除非最后一个字符已经是 0,然后它会丢弃该 0,因此示例 $1.70 变为 $1.7
我该如何解决这个问题?
【问题讨论】:
-
数字中没有“最后一个字符”。 Math.Round 不会丢弃任何字符,因为它不对字符串进行操作。也许在你的情况下 ProductWeightByType 是一个字符串?那么你一开始就做错了,应该把
Option Strict On作为你代码文件的第一行。 -
没有元数据与浮点数一起运行来说明它们四舍五入到多少小数位。因此,字符串转换代码将对什么是最正确的做出最好的猜测,并且在一般情况下,它不会保留结尾的零(因为它不知道这些零在哪里重要,在哪里不重要)。请注意,1.7 在二进制 FP 中不能完全表示,因此库已经通过隐藏最低有效小数位来美化您的数字。
标签: vb.net decimal price math.round