gpt4 book ai didi

objective-c - CGFloat 添加错误?

转载 作者:可可西里 更新时间:2023-11-01 05:04:53 25 4
gpt4 key购买 nike

我试图在我的程序中递归地添加一些 CGFloat 值。我刚刚意识到在一种特定情况下生成的总数是不正确的。为了确保我的程序逻辑没有任何错误,我创建了一个该场景的简单示例(见下文),并打印了相同的错误值。

CGFloat arr[3] = {34484000,512085280,143011440};
CGFloat sum = 0.0;
sum = arr[0] + arr[1] + arr[2];

NSLog(@"%f",sum);

int arr1[3] = {34484000,512085280,143011440};
int sum1 = 0.0;
sum1 = arr1[0] + arr1[1] + arr1[2];

NSLog(@"%d",sum1);

第一个 NSLog 打印 689580736.000000... 而正确结果为 689580720。但是第二个 NSLog 打印正确结果。我不确定这是错误还是我做错了什么。

谢谢,穆拉利

最佳答案

CGFloat 是 32 位目标(例如 iOS)上的单精度 float - 它只有 23 位尾数,即大约 6 - 7 位有效数字。如果您需要更高的准确性,请使用 double 类型。

您可能应该阅读 David Goldberg 的 What Every Computer Scientist Should Know About Floating-Point Arithmetic在进一步学习编程之前。

关于objective-c - CGFloat 添加错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7302384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com