2011-09-29 51 views
0

任何一個可以幫我如何獲得浮點值,因爲它是從文本框如何獲得浮點值,因爲它是從目標C文本框中

防爆:我已經進入40.7

rateField=[[rateField text] floatValue]; 

我得到rateField值爲40.7000008但我只需要40.7

請幫幫我。

在此先感謝

感謝每一個身體,

我嘗試了所有的可能性,但我沒能得到我想要的東西。我不打算將值轉換爲字符串。我想使用該值進行計算。如果我再次使用數字格式化程序時,我從數字轉換爲浮動它給同樣的問題。所以我只想要浮點值,但它應該是我在文本框中給出的任何值不應填充任何值。這是我的請幫助我。

感謝&認爲巴魯


感謝每一個身體,

我嘗試了所有的可能性,但我沒能得到我想要的東西。我不打算將值轉換爲字符串。我想使用該值進行計算。如果我再次使用數字格式化程序時,我從數字轉換爲浮動它給同樣的問題。所以我只想要浮點值,但它應該是我在文本框中給出的任何值不應填充任何值。這是我的請幫助我。

感謝&問候 巴魯

回答

0

嘗試使用double代替。通常解決這個問題。與存儲精度有關。

double dbl = [rateField.text doubleValue];

+0

謝謝你的回覆,但我沒有得到雙重 – Balu

3

這是確定。如果您甚至使用double,則不能保證您會得到40.7

如果你想輸出40.7可以使用%.1fNSNumberFormatter

0

當使用浮點數,這些東西都可以的,因爲數字存儲在計算機內存中的二進制格式的方式發生。

它類似於1/3 = 0.33333333333333 ...的十進制數。

處理此問題的最佳方法是在顯示值的文本框中使用數字格式器。

+0

感謝您的回覆。打印是好的。但我想要使用字符串執行操作的精確值,我們無法執行操作。所以我只需要以浮點形式的文本框中的值。這些值應該是給定的格式,它們不應該被填充任何值。我們可以使用NumberFormater來做,但是如果我們將數字轉換爲浮動同樣的問題重複。所以請給我解決方案除了截斷它可能不會給出準確的價值。 – Balu

0

您已經解決了浮點值。

浮點數的精度有限。雖然它取決於系統 ,但舍入引起的浮點相對誤差大約爲1。1e-8 非基本算術運算可能會給出更大的錯誤,並且當然,當幾個操作 複合時必須考慮錯誤編程。

此外,有理數是在基座10,如0.1或0.7精確表示作爲 浮點數,沒有一個 精確表示作爲浮點數在基座2,其是 內部使用,不管尾數的大小。因此,他們 不能被轉換成其內部的二進制對應,沒有一個精度的小損失。這可能導致混亂的結果: 例如,地板((0.1 + 0.7)* 10)通常會返回7代替 預期8,由於內部表示將會像 7.9999999999999991118 ....

所以,如果你使用這些數字輸出,你應該使用一些舍入機制,即使對於double值。

相關問題