C#逗号后带零的双精度

C#逗号后带零的双精度,c#,asp.net,.net,double,C#,Asp.net,.net,Double,所以我有一个助手,我在系统中的任何地方都使用这个代码,在这里我需要舍入一个双精度: public static double Round(double source) { return Math.Round(source, Program.AppSettings.DigitAfterComma); } 其思想是在从文件中读取的逗号后加上一些字符,将任何输入两两舍入。我在服务中使用它进行计算,在ViewModels和.cshtml中使用它进行结果渲染 问题是处理计算是可以的,但是当我需要

所以我有一个助手,我在系统中的任何地方都使用这个代码,在这里我需要舍入一个双精度:

public static double Round(double source)
{
    return Math.Round(source, Program.AppSettings.DigitAfterComma);
}
其思想是在从文件中读取的逗号后加上一些字符,将任何输入两两舍入。我在服务中使用它进行计算,在ViewModels和.cshtml中使用它进行结果渲染

问题是处理计算是可以的,但是当我需要渲染双倍像15.0%时,我只得到15%作为输出。很难为渲染器和计算编写两种方法,因为这种方法在整个系统中有大量的引用


有没有办法每次调用xx.0而不将其格式化为字符串,因为我需要双类型输出进行计算?

嗯,
15.00==15.0=15
;您需要相同值的不同表示形式-
string result=value.ToString(“F1”)另一种可能性是从
double
切换到
decimal
decimal value=value 15.0M然后
result=value.ToString()
将返回
15.0
确定,因此重写double.ToString()方法将是一个“好”主意,它可以在.cshtml上呈现双值吗?
ToString()
是专门为对象的字符串表示而设计的(
double
)。这就是为什么
ToString()
是非常自然的选择。只有将
double
转换为字符串时,才能获得任何格式。舍入和格式是不同的。您不应该仅仅为了将数字“格式化”到某个数字而对其进行四舍五入。应该使用传递给
ToString()
或附加到
string.Format()
中的替换参数。如果对数字进行四舍五入,则会丢失信息,并且正如您所发现的那样,默认格式化程序并不总是执行您希望它执行的操作。