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

C#如何将double数值第二位小数向上取整为10的倍数

解决方案

你尝试的第5种写法Math.Ceiling(z*10)/10 已经得到了正确的数值结果,double类型中14.1和14.10的存储值完全一致,你需要的14.10只是字符串展示时保留两位小数的效果,按如下方式实现即可:

基础实现(满足普通精度需求)

double z = 14.066666;
// 先计算得到数值结果:小数点后1位向上取整
double calculatedValue = Math.Ceiling(z * 10) / 10;
// 格式化输出为保留两位小数的字符串,得到"14.10"
string displayResult = calculatedValue.ToString("0.00");

高精度实现(避免double浮点精度误差)

如果业务对数值精度要求较高,建议转decimal类型做计算,避免浮点运算的精度丢失问题:

double z = 14.066666;
decimal decValue = Convert.ToDecimal(z);
decimal calculatedDec = Math.Ceiling(decValue * 10) / 10;
// 如需转回double类型
double calculatedValue = Convert.ToDouble(calculatedDec);
// 格式化输出得到"14.10"
string displayResult = calculatedDec.ToString("0.00");

错误尝试原因说明

  • Math.Ceiling(z):直接对整数部分向上取整,所以得到15,不符合保留1位小数向上取整的要求
  • Math.Round 系列方法:用的是四舍五入规则,不是你需要的向上取整逻辑,结果不符合预期
  • Math.Ceiling(z*100)/100.0:是对小数点后两位做向上取整,得到14.07,没有达到你要的进位到小数点后1位的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:54:03