2014-11-24 32 views
2
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
Double.ToString( “N”)规则上舍入

切割和从dotnetfiddle.net粘贴( https://dotnetfiddle.net/TnOaXF)。

我的问题是我正在查看msdn中的double.ToString(),无法找出“规则”确定舍入的位置。 double.toString如何确定使用从零到舍入舍入零?任何链接到MSDN或其他权威网站将不胜感激。非常感谢你。

+2

注意:dotnetfiddle不需要登录,只需点击“共享”即可。无论哪种方式,在这里粘贴代码是很好的做法,以防万一dotnetfiddle破产,而我们只剩下一些破碎的链接。 – dcastro 2014-11-24 14:12:58

+0

@dcastro非常感谢你。我正在保存,并假设会给我一个网址也 – gh9 2014-11-24 14:17:06

+1

假设'decimal'使用与'double'相同的方法进行四舍五入,发现这[[]](http://stackoverflow.com/a/2249573/4019710) – Grice 2014-11-24 14:24:08

回答

1

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

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

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

从该页面,并从Custom Numeric Format Strings page它看起来并不像有一种方法来覆盖这一点:如果你想要别的东西,你必须手动轮格式化之前的数量。

+0

非常感谢你! – gh9 2014-11-24 14:28:07