Unity中如何限制double变量仅显示两位小数且不四舍五入?
Unity中Double变量保留两位小数且不四舍五入的实现方法
这里提供几种可靠的实现方式,根据你的使用场景选择即可:
1. 数学截断法(推荐用于需要数值结果的场景)
通过数学运算直接截断小数部分,避免四舍五入:
public double nos = 17.2369; double truncatedValue = Math.Truncate(nos * 100) / 100; // 结果为 17.23
注意:使用Math.Truncate而非Math.Floor,因为Floor会对负数向下取整(比如-17.2369用Floor会得到-17.24),而Truncate直接截断小数部分,负数处理也符合需求(-17.2369会得到-17.23)。
2. 字符串处理法(适合直接用于UI显示)
如果只需要将结果转为字符串展示,可以直接对字符串进行截取:
public double nos = 17.2369; string displayText; // 使用固定区域格式避免小数点分隔符差异 string numStr = nos.ToString(System.Globalization.CultureInfo.InvariantCulture); if (numStr.Contains(".")) { string[] parts = numStr.Split('.'); // 确保小数部分至少两位,不足补0 string decimalPart = parts[1].PadRight(2, '0').Substring(0, 2); displayText = $"{parts[0]}.{decimalPart}"; } else { displayText = $"{numStr}.00"; } // displayText 结果为 "17.23"
3. Unity UI显示直接处理
如果是给Text组件赋值,可以结合上面的方法一步到位:
// 假设你已经获取了Text组件的引用 Text displayText; double nos = 17.2369; double truncated = Math.Truncate(nos * 100) / 100; displayText.text = truncated.ToString("F2"); // 或者直接用字符串处理后的结果赋值
内容的提问来源于stack exchange,提问作者Arpit Srivastava
相关产品推荐
相关产品推荐

