簡體   English   中英

iOS UInt64數字浮動錯誤

[英]iOS UInt64 number to float error

UInt64 intValue = 999999900;
float tt = intValue;
NSLog(@"float tt = %f", tt);

輸出結果是“ float tt = 999999872”,如您所見,UInt64轉換為float會丟失某些東西,最大float大於999999900,所以我認為值999999900可以強制轉換為float,所以我的問題是為什么會丟失28在iOS中?

float具有有限的精度。 這不是數字的大小,而是有效數字的數量(本例中為9)。

使用double而不是float可以提高精度。

UInt64 intValue = 999999900;
double tt = intValue;
NSLog(@"double tt = %f", tt);

為什么要使用float而不是double? 沒有人告訴你浮點數的精度非常有限(大約7位數字),而double大約有15位數字嗎?

通常,除非您自己可以給出合理的解釋,為什么不使用浮點數比雙精度字更合適,所以絕對不要使用浮點數而不是雙精度字。

因此,您的問題是:當我故意丟掉8位數字和精度時,為什么我會失去精度,我該怎么辦? 答案很簡單:您丟失精度是因為您自己丟掉了它。 使用double而不是float。

暫無
暫無

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

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