我有一个定点数据类型:
public struct Fixed
{
public const long SCALE = 1_000_000_000;
private readonly long unscaledValue;
public static explicit Fixed(double value)
{
// Halp
}
public static explicit double(Fixed value)
{
// Halp
}
}
因此,要代表5.2,unscaledValue
将为5200000000。
将float
和double
转换为我的数据类型以及相反的最佳方法是什么?
答案 0 :(得分:-1)
您可以这样做
long fix = (long) value * scale;
将其转换为您的类型,诸如此类
double value = ((double) fix)/((double)scale);
用于重新转换。
但是要注意精度的损失,如果您想将两个类型的数字相乘,则需要重新调整运算符或结果的比例
例如
long fix3 = (fix1 * fix2)/scale;