[英]How do I convert a double value to a value of type decimal with a fixed number of decimal places in .NET
在 .NET 中,我在 double 變量中有一個值,我需要將其轉換為具有指定小數位數的十進制,並根據需要四舍五入。 我正在尋找的答案將有一個類似這樣的原型:
decimal DoubleToDecimal(double value, int numberOfDecimalPlaces)
我能想到的最好的方法是將雙精度轉換為具有正確小數位數的字符串,然后將其解析回小數:
return decimal.Parse(
double.ToString("0." + new string(numberOfDecimalPlaces,'0'))
);
我更喜歡一種不涉及到/從字符串轉換的方法,因為這似乎效率很低。
decimal DoubleToDecimal(double value, int numberOfDecimalPlaces){
return Math.Round((decimal)value, numberOfDecimalPlaces);
}
如果您需要保留尾隨零,請嘗試使用:
Math.Round((decimal)value,numberOfDecimalPlaces)+(0M*((decimal)Math.Pow(10,-numberOfDecimalPlaces)))
看:
> Math.Round(dd,20)
3.2222222
> (0M*((decimal)Math.Pow(10,-20)))
0.00000000000000000000
> Math.Round(dd,20)+(0M*((decimal)Math.Pow(10,-20)))
3.22222220000000000000
這就是你要找的。 Convert.ToDecimal 將雙精度數轉換為十進制 Math.Round 將小數四舍五入到所需的小數位數。
decimal DoubleToDecimal(double value, int numberOfDecimalPlaces)
{
return Math.Round(Convert.ToDecimal(value), numberOfDecimalPlaces);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.