C# 为什么Unity Transform最多只能输入4个小数?

C# 为什么Unity Transform最多只能输入4个小数?,c#,unity3d,C#,Unity3d,有没有办法修复它,或者它是一个软件限制 在C#中,我可以输入4个以上的小数,但在转换组件中,只有前4个小数出现。您可以称之为“软件限制”。因此,Inspector在变换中的位置表示浮点数。如果十进制精度超出浮点范围(最多7位有效数字),则将四舍五入为浮点。另外,假设您想使用Debug.Log将位置打印到控制台,它将根据.net舍入进行进一步舍入。但是,如果在代码隐藏中使用该值,则可以忽略它显示的内容。例如,(double)transform.position.x=97344.671875将显示为

有没有办法修复它,或者它是一个软件限制


在C#中,我可以输入4个以上的小数,但在转换组件中,只有前4个小数出现。

您可以称之为“软件限制”。因此,Inspector在变换中的位置表示浮点数。如果十进制精度超出浮点范围(最多7位有效数字),则将四舍五入为浮点。另外,假设您想使用Debug.Log将位置打印到控制台,它将根据.net舍入进行进一步舍入。但是,如果在代码隐藏中使用该值,则可以忽略它显示的内容。例如,(double)transform.position.x=97344.671875将显示为97344.67,对此您无能为力(我见过一些人创建了自己的变换,并按照您的意愿显示值)。要回答您的问题,唯一的解决方法是在inspector中创建自定义转换

存在软件限制

请参考您可以找到的

C#类型/关键字近似范围精度
浮动±1.5*10-45至±3.4*1038~6-9位

您的值
-40.654897
有8位数字


然而,
转换
检查器和Unity通常在大多数情况下只显示人类可读的
浮点
值表示,即使实际值可能具有更高的精度!见例

Debug.Log(new Vector3(0.0002356f, 23.123456f, -40.654897f));
输出

0.0,23.1,-40.7


这并不意味着实际值已更改。它只是显示了一个更好的可读性。

我在转换组件中看到,更详细的位置是我的意思是,您在哪里看到这个值显示?位置是一个
矢量3
,如果你把它作为一个整体来看,你会看到截断的数字。例如,如果执行
myPosition.x
,该怎么办?有关更多信息,请参阅。另外,电话号码是多少?如果大于100,则小数点后最多只能看到4位数字,因为小数点前有3位(a
float
最多有7位siginifcant数字)。如果我正确计数,则数字为-40.6548976位小数。