我正在尝试截断小数部分。
我的意思是创建一个执行此操作的函数。
1 / 9~0.11111111111111
因此,如果在想要选取5位小数的函数集中,则必须返回0.11111
我是用字符串做的,但我想这不是一个好主意。有可能使用数学运算吗?
答案 0 :(得分:5)
您可以使用
Math.Truncate
http://msdn.microsoft.com/en-us/library/7d101hyf.aspx
编辑:我的合适方法版本(虽然Gary已在下面分享了一个)
public static double Truncate(double number, int digits)
{
double conversionFactor = (Math.Pow(10.0, digits));
return Math.Truncate(number * conversionFactor) / conversionFactor;
}
答案 1 :(得分:2)
要按value
截断给定nDecimals
的小数部分,只需使用:
value = Math.Truncate(value * Math.Pow(10, nDecimals)) / Math.Pow(10, nDecimals);
因此,如果value = 1/9
和nDecimals = 5
,则会返回0.11111
答案 2 :(得分:1)
由于Math.Truncate()不允许指定您要保留的位数,因此您必须首先乘以10^d
,然后再次截断并除以10^d
,其中d为要保留的小数位数。
答案 3 :(得分:1)
您可以使用像...这样的方法。
private double TruncateAt(double number, double decimals)
{
double factor = Math.Pow(10, decimals);
return Math.Truncate(number*factor)/factor;
}
通过
调用方法double x = TruncateAt(1.0 / 9.0, 5);
如果您的程序始终使用相同的因子,您可以将其设为const并获得性能提升......
答案 4 :(得分:0)
我不确定,特别是因为我暂时没有触及C#,但我认为你可以使用Math.Round
?有点像它的使用方式here。
那么,也许试试Math.Round(0.111111111, 6);
?