小编Dim*_*sov的帖子

Swift 4:奇怪的 Double 和 Float 行为

基本上问题是在这个例子中:

let d1 = NSNumber(value: 1.4);
let d2 = d1.doubleValue;

let f1 = NSNumber(value: Float(1.4));
let f2 = d1.floatValue;
Run Code Online (Sandbox Code Playgroud)

d1 结果 1.4
d2 结果 1.3999999999999999

f1 结果 1.4
f2 结果 1.3999999999999998

有谁知道这是为什么?

我正在尝试解析 JSON 文件,例如:

{"name": "something", "version": 1.4}
Run Code Online (Sandbox Code Playgroud)

使用以下代码:

let json = try (JSONSerialization.jsonObject(with: someData) as? [String: Any])!;
let version: Double = (json["version"] as! NSNumber).doubleValue;
Run Code Online (Sandbox Code Playgroud)

或者

let version: Double = json["version"] as! Double;
Run Code Online (Sandbox Code Playgroud)

或者

let version: Double = json["version"] as! Float;
Run Code Online (Sandbox Code Playgroud)

我就是无法得到1.4 ...

四舍五入对我来说不是解决方案,因为我想将此数字写回 JSON 文件,该文件将被其他程序/语言解析,并且在文件中需要正好为 …

floating-point macos double swift4

1
推荐指数
1
解决办法
2063
查看次数

标签 统计

double ×1

floating-point ×1

macos ×1

swift4 ×1