Swift与Objective-C数学计算差异:为何输出结果不同?
Swift与Objective-C数学计算结果显示差异的真相
两者的数学计算逻辑完全一致,不存在处理差异,你看到的不同只是输出格式化方式导致的显示区别:
实际计算值完全相同
不管是Swift还是Objective-C,计算得到的dx实际存储值都是约5.364418029785156e-06(即0.000005364418029785156),两者均遵循IEEE 754双精度浮点数标准,底层存储的数值没有任何差异。Swift的
print输出特性
Swift的print函数默认会输出浮点数的完整有效精度(最多15-17位),因此直接显示了科学计数法格式的完整数值。Objective-C的
NSLog输出特性
你使用的%f格式符默认只保留6位小数,会对数值进行截断处理:0.0000053644...保留6位小数后就变成了0.000005。如果想在Objective-C中看到完整精度的数值,可以修改格式符,比如使用%.15f或者%g:NSLog(@"%.15f", dx); // 输出:0.000005364418030
内容的提问来源于stack exchange,提问作者Nic Hubbard
相关产品推荐
相关产品推荐

