2014-11-21 121 views
-1

如果我有一個數字,我如何確定小數位數?如何確定雙精度小數?

例如爲0.0001我想要得到的結果4

重複的上述建議是不是這一個,因爲 他們正在採取有關文化無關的代碼不太適合,但小數點後這個問題 只是小數導向代碼(即)。所以沒必要 引入任何更多的開銷:

Finding the number of places after the decimal point of a Double

,但他們都是很好的線程。

+0

可能重複:http://stackoverflow.com/questions/9386672/finding-the-number-of-places-after-the-小數點的雙重 – Jite 2014-11-21 08:09:13

+0

這就是你如何做到這一點http://stackoverflow.com/questions/13477689/find-number-of-decimal-places-in-decimal-value-regardless-of-culture – Vajura 2014-11-21 08:09:32

+0

我Math.Abs​​(Math.Floor(Math.Log10(d))) – 2014-11-21 08:12:48

回答

2

你不可能真的。 A double是一種浮點精度數據類型,因此它從不精確。

可以砍周圍的東西,用ToString

double d = 0.994562d; 

int numberOfDecimals = d.ToString(CultureInfo.InvariantCulture).Length 
         - d.ToString(CultureInfo.InvariantCulture).IndexOf('.') 
         - 1 
         ; 
+2

ToString依賴於文化。所以你的黑客將不會與美國文化工作。更好地使用'ToString(CultureInfo.InvariantCulture)'和'.'作爲小數點。 – dusky 2014-11-21 08:16:46

+0

@dusky:你說得對。編輯。 – 2014-11-21 08:17:24