C# - 将双精度变量限制为小数点后两位 [已关闭]

C# - Restrict double variable to two decimal places [closed]

提问人:Arpit Srivastava 提问时间:3/12/2023 更新时间:3/13/2023 访问量:156

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

8个月前关闭。

我正在使用Unity引擎制作游戏。 我正在使用一个双精度变量,并希望它只显示数字到小数点后两位。

public double nos = 0;

例如:如果 nos = 17.2369...; 我希望它显示 nos = 17.23;

P.S.:我不想四舍五入或smt。

如何实现这一目标?

C# unity-game-engine 浮点 双精度

评论

0赞 Fildor 3/12/2023
如果你正好想要 2 个位置,你需要在一定程度上四舍五入。事实上,这个问题没有解决方案,因为你排除了唯一能使它成为可能的东西。
0赞 DasKrümelmonster 3/12/2023
这个答案看起来很有希望:stackoverflow.com/a/54184194/1974021 前提是它是用于展示目的
0赞 shingo 3/12/2023
这回答了你的问题吗?如何在不四舍五入的情况下格式化浮点数?

答:

0赞 anjelomerte 3/12/2023 #1

你是对的,字符串格式也会做一些舍入。 这应该可以工作:

double num = 15.345324;
num = Math.Truncate(100 * num) / 100;
// num = 15.34

使用 10 的小数位(此处:100)的幂作为您想要作为因数。

100 -> 2dps

1000 -> 3dps

等。

编辑:以更一般的方式,人们可以像这样做 sth

double num = 12.3456789;
double numOfDecimals = 2;
num = Math.Truncate(Math.Pow(10, numOfDecimals) * num) / Math.Pow(10, numOfDecimals);

评论

0赞 Arpit Srivastava 3/13/2023
好的,谢谢。我在哪里写 2dps 和 3dps 的东西。
0赞 anjelomerte 3/13/2023
请参阅我更新的答案以获取更通用的方法:)