Dim number = 5.678
Console.WriteLine(number.ToString("#,##0.##"))
显示5.68
。是否有任何数字格式字符串没有舍入它?
更新:所需结果为5.67
答案 0 :(得分:0)
Console.Write(Math.Truncate(number * 100) / 100);
这应该有效。阅读更多答案here
答案 1 :(得分:0)
如果你总是要截断到2个地方,你可以使用:
Console.WriteLine("{0:F2}", number - 0.005);
否则你可以更改数字' 0.005'根据您的需要。
更新:如果你想把它当作字符串,我不认为C#中有任何现成的解决方案,所以你可能需要做一些额外的工作,如下所示(你可以创建一个帮助方法):< / p>
const double number = 5.678; //input number
var split = number.ToString(CultureInfo.InvariantCulture).Split('.');
Console.WriteLine(split[0] + (split.Length > 1 ? "." : "") + (split.Length > 1 ? split[1].Substring(0, split[1].Length > 1 ? 2 : split[1].Length) : ""));
输入:5.678; 输出:5.67;
输入:5.6325; 输出:5.63;
输入:5.64; 输出:5.64
输入:5.6; 输出:5.6;
输入法:585.6138 输出:585.61答案 2 :(得分:0)
我真的很惊讶没有默认功能。这基本上是ATP的答案,除了他的逗号在数千个位置之间。
int precision = 2;
string format = "0.##";
decimal rounder = 5.0m/(decimal) Math.Pow(10, precision + 1);
var result = (5.678m - rounder).ToString(format); // This doesn't work for a value of 0m
一行:
result = (5.678m - 5.0m / (decimal)Math.Pow(10, 2 + 1)).ToString("0.##");