舍入的Double.ToString(“N”)规则

时间:2014-11-24 14:11:04

标签: .net

using System;

public class Program
{
    public static void Main()
    {
        double roundUp = 55.329;
        double roundDown = 55.324;
        double awayFromZero = 55.325;
        Console.WriteLine("round up:" + roundUp.ToString("N"));
        Console.WriteLine("round down:" + roundDown.ToString("N"));
        Console.WriteLine("round away from zero:" + awayFromZero.ToString("N"));
    }
}

结果 上限:55.33
向下舍入:55.32
圆零:55.33

从dotnetfiddle.net(https://dotnetfiddle.net/TnOaXF)剪切并粘贴。

我的问题是我在msdn中查看double.ToString()并且无法找出“规则”在哪里确定舍入。 double.toString如何确定使用舍入零而不是舍入到零?任何指向msdn或其他权威网站的链接都将非常感激。非常感谢你。

1 个答案:

答案 0 :(得分:1)

Standard Numeric Format strings文档中,它总是远离零:

  

要执行舍入操作,请使用Math.Ceiling,Math.Floor或Math.Round方法。

     

当精度说明符控制结果字符串中的小数位数时,结果字符串会反映从零开始舍入的数字(即使用MidpointRounding.AwayFromZero)。

从该页面和Custom Numeric Format Strings page看起来似乎没有办法覆盖它:如果你想要别的东西,你必须在格式化之前手动舍入数字。