提问人:severelyautistic 提问时间:4/18/2023 最后编辑:gunr2171severelyautistic 更新时间:8/8/2023 访问量:275
如何将定点数转换为浮点数?
How do i convert a fixed point number into a float?
问:
使用 Unity。 我需要使用定点确定性地将一些数据联网。如何将定点数转换回浮点数,以便将其应用于对象变换?
public class Fixed
{
private int front;
private int back;
private const uint MAX_32 = 4294967295;
}
这是我的定点数类。
答:
0赞
John McFarlane
4/18/2023
#1
不要想太多。只需按恒定量缩放您的实数(理想情况下是 2 或 10 的幂,具体取决于您的需要)并存储在整数中。要转换回来,请除以相同的金额。在这种情况下,请考虑将浮点值乘以 4294967296.0 并分配给 .long
0赞
zhuang liu
4/23/2023
#2
@NineBerry如前所述,您可以使用 Decimal 类型来表示定点数:
decimal fixedPointNum = 123.456m; // a fixed point number
float floatNum = Convert.ToSingle(fixedPointNum);
Console.WriteLine(floatNum);
评论
2赞
Lutz Lehmann
4/23/2023
你可以告诉自己什么是定点数。其目的是仅使用少量整数运算来模拟非常有限的子集中的实数。这与多精度浮点格式完全相反,无论它是使用 2 还是 10(或它们的某些幂)作为基础来实现的。
0赞
abel gladstone
8/8/2023
#3
答案取决于范围。 如果您尝试表示 (-1, +1) 中的十进制数,则可以将输入除以 0x7FFFFFFF。
如果您有其他范围(例如-256.0,255.0),则可以将输入除以0x007FFFFF
这完全取决于您在输入中期望的范围
评论
front+(double)back/MAX_32
double res = back; res = front + res/MAX_32