我想從這樣一個雙重的字符串:有沒有辦法防止stringWithFormat四捨五入?
double aDouble;
NSString* doubleString = [NSString stringWithFormat:@"%g", aDouble];
與大多數數字我得到想要的結果,但對於
10000.03
我得到:
10000
作爲我的字符串。有沒有辦法來防止這種行爲?我想結果的
10000.03
我想從這樣一個雙重的字符串:有沒有辦法防止stringWithFormat四捨五入?
double aDouble;
NSString* doubleString = [NSString stringWithFormat:@"%g", aDouble];
與大多數數字我得到想要的結果,但對於
10000.03
我得到:
10000
作爲我的字符串。有沒有辦法來防止這種行爲?我想結果的
10000.03
嘗試%.2f代替%克線
花車和雙是基數的兩種表示方法,我們喜歡在基地十看,就像不存在正確表示數字爲1/3的數字有限數字的數字有很多基數不能完全表示爲2的基數。例如0.1(1/10)不能完全表示爲基數2
%g
在沒有精度說明符的情況下會很棘手。請注意,%f
可與double
值一起使用,並且可以使用%.2f
(將2
替換爲所需的任意位數)來限制小數點後的位數。
%g
是一個格式說明根據以下算法%f
或%e
之間的選擇:
%e
格式說明
%f
和精度P - ( X + 1)%e
和精度P - 1.#
標誌,否則將從結果的小數部分中刪除任何尾隨零,並且如果沒有剩餘小數部分,則刪除小數點字符。在你的情況,%g
未指定的精度,因此P = 6.當與%e
,這給1.000003e + 04轉換10000.03,指數爲4,因此X = 4。由於P>X> = -4,轉換與風格%f
和精度P - (X + 1)= 6 - (4 + 1)= 1。但10000.03精確1(一小數點後面的數字)產生10000.0,其沒有實際的小數部分,因此%g
格式10000.03爲10000.
嘗試使用'%lf'代替。 – PengOne