我将 0 作为参数传递给 String(format: "%.2f")
,它按预期适用于 iPhone 5s、se、6、6s 等...但是,它在iPhone 5上停止工作,我猜测这是32位和64位系统的问题,因为%f
格式化64位 float 。用 Double(0)
包裹 0 并且它起作用了,结果是 0.00。
有人可以更详细地解释一下吗?
最佳答案
String(format:)
使用与以下相同的转换规范
printf
(添加了一些内容,例如对象的 %@
)。特别是 %f
转换需要参数列表上有一个 Double
,并传递
其他任何事情都会导致未定义的行为:它可能会产生意外的结果
输出或崩溃。
在 64 位平台上,传递 0
可能会偶然起作用,因为这样
Int
是一个 64 位整数,因此具有与 Double
相同的大小。
但即使这样也不能保证有效:
传递整数参数而不是预期的 float
指针编号仍然是未定义的行为。
关于ios - Int to format %.2f 在 iPhone 5 上返回意外数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44280124/