将字符串转换为浮点数而不丢失小数位

问题描述 投票:0回答:1

我有很多代表旋转值的字符串。这些字符串有 0 到 5 位小数。

将这些字符串转换为浮点数以将其作为旋转值应用到游戏对象时,浮点数始终会被截短至小数点后 4 位。对于超过 500 个游戏对象,随着时间的推移,这将导致巨大的不精确性。

如何保留所有小数位?

这是我使用的代码[为了更好地理解而修改]:

myString = "344.93873";
segment.transform.rotation = Quaternion.Euler((float)double.Parse(myString), 0f, 0f);

我得到的是

344.9387
,最后没有
3
。损失发生在这里:
(float)double

但是,当在Unity3D中手动旋转对象时,我可以在检查器中看到小数点后4位以上的旋转值。

string unity-game-engine floating-point type-conversion rotation
1个回答
0
投票

默认

float.ToString

ToString() 方法以当前区域性的默认(“G”或通用)格式格式化单个值。

进一步默认为

float
(=
Single
)

单人
表示数字的最小可往返位数(在 .NET Framework 中,G7 是默认值

现在您输入的号码

344.93873

8 位数字,因此默认情况下它被限制为

344.9387

只有 7 位数字。

A

float
可以有
~6-9 digits
所以为了确保始终看到您应该使用的完整值

print(myFloat.ToString("G9"));
© www.soinside.com 2019 - 2024. All rights reserved.