首页 > 解决方案 > C# 四舍五入 1.998 到 1.9

问题描述

我已经阅读了许多舍入数字的示例,但没有解决我的问题...

我可能遗漏了一些明显的东西,但我尝试了:

string.Format("{0:0.0}", 1.998) = "2.0"
(1.998).ToString("0.0") = "2.0"
(1.998).ToString("0.#") = "2"
Math.Round(1.998, 1) = 2

我需要:1.9

注意:值 1.998 可能是 1.998xxx

看起来很简单,但无法得到这个结果......

标签: c#rounding

解决方案


你想从我的理解中截断。试试这个:

(Math.Truncate(1.998m * 10))/10

强制decimal而不是double防止浮点计算出现问题。另外,请查看这篇解释 、 和 之间的舍入差异的帖子,找出最Truncate适合您需求的帖子。RoundFloorCeiling


推荐阅读