ios - Int to format %.2f 在 iPhone 5 上返回意外数字

标签 ios swift floating-point 64-bit 32bit-64bit

我将 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/

相关文章:

ios - 关系故障(核心数据)

SwiftUI - TabView with NavigationView 生成灰色区域

math - float 学有问题吗?

c++ - 仅在 c++ 中存在小数值时格式化浮点值的输出

ios - 快速回历(伊斯兰)日历

ios - 从 Objective-C 中的字符串中删除短单词和字符

ios - 使用 Phone Auth Credential iOS 更新电子邮件

ios - swift 2 : My code saves the data(The item added shows in the list) but as soon as I force close the app it deletes all data?

ios - AVCaptureFileOutputRecordingDelegate函数给出的URL无法播放

compiler-errors - 浮点转换和算术