2009-12-13 58 views
0

所以我知道如何用打印浮點數與一定的小數位數。如何返回一個帶有指定小數位數的浮點數?

我的問題是如何返回它與指定的小數位數?

謝謝。

+5

由於浮點數不是第一位的小數,所以這個問題沒有任何意義。請解釋你認爲「小數位」在這方面的含義。請提供例子。 –

回答

6

您可以使用round()功能

的文檔看:

round(x[, n]) 

X四捨五入到n數字,四捨五入到平均。如果省略n,則默認爲0.

4

爲了得到小數點後兩位,由100樓乘數,然後乘以100

鴻溝,並注意數量,您將返回不會真的只有兩位小數,因爲除以100在大多數情況下不能完全用IEEE-754浮點算法表示。它只會是最接近的可接近的數字,只有兩位小數。

+4

爲什麼你建議不用'round(the_number,2)'? –

+0

我不:)我給一個語言不可知的解決方案,只使用基本的操作在任何地方都可用。我也希望有人會提到'十進制'模塊,但沒有人做過......啊,是的,某事。幹得好那個男人! –

2

浮點數有無限的小數位數。計算機上的物理表示取決於浮點的表示,或者雙精度表示,或者取決於a)語言b)構造,例如, float,double等。c)編譯器實現d)硬件。

現在,考慮到您在特定語言中使用浮點數(即實數)的表示形式,您的問題是如何將其舍入或截斷爲特定數字的數字?

在回電中不需要這樣做,因爲您可以隨後截斷/舍入。事實上,在實際打印之前,您通常不想截斷,以保持更高的精度。如果您希望確保結果在不同的算法/硬件中保持一致,例外可能是例外。說你有一個需要跨越不同語言/平臺,通過單元測試的一些金融交易軟件等

+1

所有的浮點數實際上都可以用一個*有限*個十進制數字來表示(證明:將任意有限的2的整數冪(包括負數)乘以10,得到一個足夠大的功率,然後得到一個整數。 – EOL

+0

對不起,我把浮點數和實數混淆了。根據定義,浮點數是有限數字的字符串。 –

4

如果您確實需要具有固定精度的浮點數,則可以使用decimal模塊。這些數字有一個用戶可以改變的精度,你可以做兩位小數的計算。

相關問題