【问题标题】:Unity 3D & C# : Adding a decimal to a float, rounding upUnity 3D & C#:将小数添加到浮点数,四舍五入
【发布时间】:2018-10-24 20:43:19
【问题描述】:

所以我创建了一个简单的脚本,其中有一个浮点变量“rps”,它从 0.001 开始。

我每秒将 0.0001 添加到此变量。

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

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

无论如何要解决这个问题,或者它只是 Unity 或 C# 中的一个错误,如果我无法修复它,有没有一种简单的方法来解决它,因为我已经搜索了互联网,它看起来像很多代码,这似乎没有必要。 感谢您的帮助

【问题讨论】:

标签: c# unity3d decimal rounding


【解决方案1】:

试试这个:

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

你需要稍微调整一下,但你应该明白了。

【讨论】:

  • 抱歉之前是 c++。修复。这会将f 舍入到第四位。使您的 .00019999 成为一个整数。(.0002)
【解决方案2】:

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

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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多