You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除浮点数最后一位小数且避免四舍五入?

解决浮点数截断最后一位小数的问题

你当前用Mathf.Round的方式会触发四舍五入,自然得不到想要的截断效果。下面是几种靠谱的实现方法:

方法一:用Mathf.Truncate直接截断

这是最稳妥的数值处理方式,不管正负都能精准截断到指定小数位:

float value = 3.567f;
// 保留两位小数,先放大100倍截断,再缩小回原比例
value = Mathf.Truncate(value * 100f) * 0.01f;
// 最终结果为3.56

原理很简单:Mathf.Truncate会直接去掉数值的小数部分,不会做任何四舍五入操作。把3.567放大100倍得到356.7,截断后是356,再除以100就得到3.56。

方法二:整数转换(通用场景)

如果不想用Truncate,也可以通过强制转换整数实现截断,正负数值都适用:

float value = 3.567f;
value = (float)((int)(value * 100f)) * 0.01f;

整数转换时会自动丢弃小数部分,和Truncate效果一致,代码更简洁,可读性也不错。

注意事项

  • 如果你只是需要显示截断后的数值,而非修改原始数值用于计算,不建议用字符串截取的方式(容易出现精度偏差),优先用上面的数值处理方法。
  • 浮点数本身存在精度误差,比如某些极端数值可能出现类似3.5600001的情况,如果需要严格的两位小数显示,可以结合字符串格式化,但要明确是显示需求还是计算需求。

内容的提问来源于stack exchange,提问作者Vika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 08:12:27