簡體   English   中英

如何在Objective-C中設置精度

[英]how to set precision in Objective-C

在 C++ 中,有一個 std::setprecision 函數可以設置浮點/雙精度。 如何在 Objective-C 中設置精度? 和下面的打印:

(lldb) p 10/200
(int) $0 = 0
(lldb) p (float)10/200
(float) $1 = 0.0500000007

第 3 行的結果是 0.0500000007,為什么結果中是 '7'? 我怎樣才能得到結果是 0.05?

浮點數是二進制浮點數。 0.05 不能用二進制浮點數精確表示。 結果永遠不可能是 0.05。

此外,您使用 float 而不是 double 是毫無意義的。 float 只有六或七位精度。 除非你有一個很好的理由可以解釋,否則使用 double,它給你大約 15 位的精度。 您仍然無法准確地獲得 0.05,但誤差會小得多。

您可以使用 NSNumberFormatter 以多種方式格式化對象 --- 太多無法在此列出,請參閱 Xcode 提供的文檔。 另請參閱數據格式指南。

您必須在% modulo運算符及其identifier f之間進行更改才能獲得所需的結果。

NSString* formattedNumber = [NSString stringWithFormat:@"%.02f", myFloat];

%.02f 告訴格式化程序您將格式化一個浮點數 (%f),並且應該四舍五入到兩個位置,並且應該用 0 填充。

例子:

%f = 25.000000    // results 25.000000 
%.f = 25    // results 25
%.02f = 25.00 // results 25.00

請使用

     double A =  0.0500000007;
       NSString *b =[NSString stringWithFormat:@"$%.02f",A] ;
   double B = [b doubleValue];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM