因此,我创建了一个简单的脚本,其中有一个浮点变量“ rps”,起始于0.001。
每秒钟我向该变量添加0.0001。
当我在Unity 3D中将变量输出到屏幕时,为什么它以非常长的十进制形式出现,例如0.001099999999?
所以不是添加0.0001,而是添加0.00009999999999,这不是我要添加的100%。
反正有解决此问题的方法吗,还是只是Unity或C#中的一个错误,如果我无法修复它,有没有一种简单的方法可以解决这个问题,就像我在互联网上搜索过的一样,很多代码,这似乎没有必要。 感谢您的帮助
答案 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;
}