【问题标题】:Casting big NSInteger to float issue铸造大 NSInteger 浮动问题
【发布时间】:2016-05-26 06:08:16
【问题描述】:

1) 定义大的 NSInteger
2) 转换为浮动
3) 对数浮动
4) 每次都变成稍小的数字???

NSInteger val = 485935336;
float val_float = (float)val;
NSLog(@"%f", val_float); //logs 485935328, not 485935336

有什么线索吗?

【问题讨论】:

    标签: ios objective-c floating-point nsinteger


    【解决方案1】:

    知道为什么吗?当然。 float 有大约六位数的精度。 double 有 15 位精度,这就是为什么你应该总是使用 double 除非你能给出一个很好的理由。你会遇到同样的问题,但只有当数字更大时。

    【讨论】:

    • 抱歉,我的代码与其中的专有信息有所不同,当我在这里发帖时,我很快将其换成了 @(485935336) 并点击“发布”,我将使用 double 和看看我能不能让这个工作:D
    猜你喜欢
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    相关资源
    最近更新 更多