当我意识到控制台中有一些奇怪的数字时,我正在编写这段代码来获取最多两位小数的随机浮点数。
public void PrintNumbers()
{
for(int i = 0; i < 30; i++)
{
int num = Random.Range(1, 200);
float x = num * 0.1f;
print(x);
}
}
然后我意识到这个数字总是 8.900001 所以我写了这段代码:
public void PrintWeirdNumber()
{
float x = 89 * 0.1f;
print(x);
}
此方法总是打印 8.900001。我已经找到了一个简单的解决方案,就是将整数除以 10.0f 而不是乘以 0.1f。
public void PrintNumber()
{
float x = 89 / 10.0f;
print(x);
}
这将始终打印 8.9
为什么会这样?我只是不太了解浮点数,无法了解这背后的原因。有什么帮助吗?