要求返回保留1位小数的double类型值的代码问题咨询
解决保留1位小数并返回严格double类型的问题
问题分析
现有代码通过字符串格式化转decimal再转回double的方式,逻辑上能得到82.0,但转换后的double值82和82.0在二进制存储中是等价的,且这种绕转方式冗余易混淆。我们需要直接生成保留1位小数的double类型值,确保返回严格符合要求的82.0。
修改后的代码
if(cartWeight >= 10) { totalPrice = 100; double price = totalPrice - (totalPrice * 18.0 / 100); // 直接用Math.Round保留1位小数,得到double类型的82.0 price = Math.Round(price, 1); return price; }
说明
- 使用
Math.Round(price, 1)可直接对double值做1位小数的四舍五入处理,返回结果仍为double类型,能严格保证1位小数精度,即82.0。 - 去掉了多余的
decimal转换步骤,避免字符串格式化带来的额外开销和类型转换的不必要复杂度。 - 若需输出时显示为82.0,可在输出环节做格式化处理,但返回的
double数值本身已符合要求。
内容的提问来源于stack exchange,提问作者Amit Kumar Ojha
相关产品推荐
相关产品推荐

