如何使用舍入的小数位数来打印double

时间:2014-08-16 20:51:13

标签: c# asp.net-mvc c#-4.0 double razor-2

C#4.0 ASP.NET MVC4应用程序包含从Razor视图调用的Out方法。 它接收舍入double作为参数。

protected static string Out( double roundedValue ) {
  return roundedValue.ToString();  
}

它应该返回舍入值以在视图中显示的小数位数。如参见

Out( Math.Round(1.2f, 2));

应该返回1.20

Out( Math.Round(1.2f,3 ));

应返回1.200

实际上第一次通话返回1.2。看起来像尾随零被ToString()删除。 如何强制Out方法返回Round Call中指定的小数位数,

如参见

Out( Math.Round(1.2f, 2));

应该返回1.20

2 个答案:

答案 0 :(得分:1)

了解floatdouble 保留尾随零是很重要的。您有两种选择:

  • 指定格式以包含您对
  • 感兴趣的小数位数
  • 使用decimal,其中 保留尾随零

从您的问题中不清楚哪个选项最合适。如果这是货币价值(例如价格),那么您肯定应该使用decimal

答案 1 :(得分:1)

你被错误的数字舍入和显示值的概念。 Math.Round()仅舍入到您正在使用的小数位数。它对.Tostring()函数最后放置的小数位数没有影响。您需要使用以下格式输出您想要的方式:

    float number = 1.23f;
    Console.WriteLine(number.ToString("0.000")); //1.230
    Console.WriteLine(number.ToString("0.00"));  //1.23
    Console.WriteLine(number.ToString("0.0"));   //1.2

如果您想了解更多信息,请参阅MSDN page on .ToString() Formatting。 :)