Unity 3D&C#:向浮点数添加小数,四舍五入

时间:2018-10-24 20:43:19

标签: c# unity3d decimal rounding

因此,我创建了一个简单的脚本,其中有一个浮点变量“ rps”,起始于0.001。

每秒钟我向该变量添加0.0001。

当我在Unity 3D中将变量输出到屏幕时,为什么它以非常长的十进制形式出现,例如0.001099999999?

所以不是添加0.0001,而是添加0.00009999999999,这不是我要添加的100%。

反正有解决此问题的方法吗,还是只是Unity或C#中的一个错误,如果我无法修复它,有没有一种简单的方法可以解决这个问题,就像我在互联网上搜索过的一样,很多代码,这似乎没有必要。 感谢您的帮助

2 个答案:

答案 0 :(得分:1)

尝试:

float rounded = (float)(Math.Round((double)f, 4);

您需要对其稍作调整,但您应该了解一下。

答案 1 :(得分:0)

使用固定点或整数,如果需要该精度级别。

float precision = 10000f; // 1.0000
int rps = (int)(0.001f * precision); // or rps = 10
int inc = (int)(0.0001f * precision); // or inc = 1

while (...)
{
    rps += inc;

    float rps_as_float = rps / precision;
}