如果我有一個數字,我如何確定小數位數?如何確定雙精度小數?
例如爲0.0001我想要得到的結果4
重複的上述建議是不是這一個,因爲 他們正在採取有關文化無關的代碼不太適合,但小數點後這個問題 只是小數導向代碼(即)。所以沒必要 引入任何更多的開銷:
Finding the number of places after the decimal point of a Double
,但他們都是很好的線程。
如果我有一個數字,我如何確定小數位數?如何確定雙精度小數?
例如爲0.0001我想要得到的結果4
重複的上述建議是不是這一個,因爲 他們正在採取有關文化無關的代碼不太適合,但小數點後這個問題 只是小數導向代碼(即)。所以沒必要 引入任何更多的開銷:
Finding the number of places after the decimal point of a Double
,但他們都是很好的線程。
你不可能真的。 A double
是一種浮點精度數據類型,因此它從不精確。
您可以砍周圍的東西,用ToString
:
double d = 0.994562d;
int numberOfDecimals = d.ToString(CultureInfo.InvariantCulture).Length
- d.ToString(CultureInfo.InvariantCulture).IndexOf('.')
- 1
;
ToString依賴於文化。所以你的黑客將不會與美國文化工作。更好地使用'ToString(CultureInfo.InvariantCulture)'和'.'作爲小數點。 – dusky 2014-11-21 08:16:46
@dusky:你說得對。編輯。 – 2014-11-21 08:17:24
可能重複:http://stackoverflow.com/questions/9386672/finding-the-number-of-places-after-the-小數點的雙重 – Jite 2014-11-21 08:09:13
這就是你如何做到這一點http://stackoverflow.com/questions/13477689/find-number-of-decimal-places-in-decimal-value-regardless-of-culture – Vajura 2014-11-21 08:09:32
我Math.Abs(Math.Floor(Math.Log10(d))) – 2014-11-21 08:12:48