今天游戏有bug,数据没有问题,但是显示的时候各种不对。
测试代码:test.cs
public class test : MonoBehaviour { public Text text1; public Text text2; void Start() { float number = 98647135; text1.text = number + ""; float number2 = 0.08751f; text2.text = (number2 * 100) + "%"; } }
unity4.6.9 运行结果:
1)浮点数数据大的时候,自动显示科学技术法?
float只有7位有效数字,当数据超过7位的时候必须使用double或者decimal类型。就算用 float.ToString("F0") 不显示科学技术法了,数据精确度已经丢失了,因为只有前7位是有效的。
解决方法:改成double。
2)浮点数乘以整数最后显示9999,精确度显示问题?
解决方法:System.Math.Round设置精确度
解决代码:test.cs
public class test : MonoBehaviour { public Text text1; public Text text2; public Text text3; public Text text4; public Text text5; void Start() { float number = 98647137; text1.text = number + ""; text2.text = System.Convert.ToDouble(number) + ""; //强制转换也是丢失精确度。 double d_number = 98647137; text3.text = d_number + ""; float number2 = 0.08751f; text4.text = (number2 * 100) + "%"; text5.text = System.Math.Round(number2 * 100, 4) + "%"; } }
Unity运行效果图:
文章来源: Unitybug5_浮点数显示问题