gpt4 book ai didi

c# - Math.Truncate 返回不正确的小数截断

转载 作者:行者123 更新时间:2023-11-30 22:21:06 24 4
gpt4 key购买 nike

当我尝试将 4 位小数(在解决方案中要求)添加到 2 位小数 double 值时发生了一件奇怪的事情:

不正确的值:

    var result = string.Format("{0:#,0.0000}", Math.Truncate(2.03*10000)/10000);

//返回2.0299

正确的值:

    var result = string.Format("{0:#,0.0000}", Math.Truncate(2.02*10000)/10000);

//返回 2.0200

和:

    var result = string.Format("{0:#,0.0000}", Math.Truncate(2.04*10000)/10000);

//返回 2.0400

知道为什么这只发生在 2.03 上吗? 12.03 作为输入值返回 12.0300 btw。

我迷路了。请帮忙。

最佳答案

这里乘以 10000 和除以 10000 没有意义。您只会冒引入轻微错误的风险,就像您在此处看到的那样:请注意, double 和 float 使用以 2 为基数的表示形式,因此不能准确地表示任意十进制数。

这会给你你想要的:

String.Format("{0:#,0.0000}", 2.03)

如果您需要十进制数字的完美准确性,请改用 decimal 类型。

关于c# - Math.Truncate 返回不正确的小数截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14564591/

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