我想截斷小數部分。如何截斷小數部分?
我的意思是創造出這樣做的功能。
1/9〜0.11111111111111
所以,如果想要挑選5位小數的功能設定,必須返回0.11111
我用字符串這樣做,但我猜是不是一個好主意。使用數學運算有可能做到這一點嗎?
我想截斷小數部分。如何截斷小數部分?
我的意思是創造出這樣做的功能。
1/9〜0.11111111111111
所以,如果想要挑選5位小數的功能設定,必須返回0.11111
我用字符串這樣做,但我猜是不是一個好主意。使用數學運算有可能做到這一點嗎?
您可以使用
Math.Truncate
http://msdn.microsoft.com/en-us/library/7d101hyf.aspx
編輯:我的一個合適的方法的版本(雖然加里已經共享下面一個)
public static double Truncate(double number, int digits)
{
double conversionFactor = (Math.Pow(10.0, digits));
return Math.Truncate(number * conversionFactor)/conversionFactor;
}
由於Math.Truncate()不允許指定要保留的位數,您必須首先乘以10^d
,截斷併除以10^d
agai n,其中d是要保留的小數位數。
要通過nDecimals
截斷給定value
的小數部分,只需使用:
value = Math.Truncate(value * Math.Pow(10, nDecimals))/Math.Pow(10, nDecimals);
所以如果value = 1/9
和nDecimals = 5
,它返回0.11111
這個人計算兩次中間結果... –
我不知道,尤其是因爲我的天堂」牛逼觸及C#一段時間,但我認爲你可以使用Math.Round
?有點像它使用的方式here。
所以,也許嘗試Math.Round(0.111111111, 6);
?
可以使用的方法一樣......
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);
的方法。如果你的程序使用相同的因素一致,你可能會使其成爲一個常量和獲得性能的提高...
有此編輯之間的怪異相似小時前和答案發表於4個小時前... –
@加里 - 增值業務:我已經回答得更早(我是第一個回答,它現在說5小時前)。我沒有提供代碼示例,所以我認爲我應該。發佈時,我看到你已經添加了一個(在我的編輯中,我甚至提到你已經分享了一個例子)。在那之前我沒有見過你。這是否違反網站規則? – NoviceProgrammer
體貼的反應是,如果你認爲別人的答案是有價值的,你會給予好評它,而不是複製他們的代碼到你自己的答案和不斷變化的變量名。 –