iphone - 从 CGFloat 中减去

标签 iphone ios floating-point cgfloat

NSLog(@"original float value = %f", [anNSNumber floatValue]);
                 
float newFloat = [anNSNumber floatValue] - 1.0f;
                 
NSLog(@"newFloat = %f", newFloat);

给我

orginal float value = 215987480044765184.000000

newFloat = 215987480044765184.000000

如何从 float 中简单地减去 1?

最佳答案

不,你不能进一步简化它。 float 不同于整数。

另一件需要注意的事情是 float 类型最多只能包含 24 位精度(大约 6-7 位小数精度)。你那里的数字超过了float可用的精度,并且减法量太小而不会影响24位精度,所以操作只是不会对结果做任何改变.

即使在double中进行操作,问题也没有解决,因为数字甚至超过了double的53位精度。

根据您的要求,您可能需要 64 位整数类型(long long 类型,或更具体的 int64_t)。如果更大的数字需要这样的精度,则基本类型是不够的。如果您需要非常高的精度,则可能需要外部库。

关于iphone - 从 CGFloat 中减去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11149560/

相关文章:

ios - iOS 中的位置服务

ios - 在 swift 中使用 GPUImage 链接过滤器

ios - 我需要4条If语句,然后如果所有条件都正确,则需要1条else语句

c++ - 是否存在 x + 1 == x 类型的 float 值 x?

x86 - 英特尔内在函数指南相对错误定义

ios - CoreLocation : CLClient is deprecated. Will be obsoted soon.in iPhone

ios - 苹果是否允许使用以下代码设置默认语言?

ios - 从应用程序打开 iphone 消息设置在 ios 11.0 和更高版本中不起作用

floating-point - 并行性: Subtly different floating point results?

ios - 无需越狱iPhone即可访问/var/mobile/Containers/Data/Application中的文件