核心中的Odin浮点转换:encoding/json

问题描述 投票:0回答:1

从 json 加载值时,如果我从 json 文件解析 -10.0,它不会转换为 -10.0 而是 -9.98..

这是预期的行为吗?和浮动有关系吗?当我简单地将 10 乘以 -1 并将其保存到 f64/f32 中时,它表示为 -10,因此在浮点表示中不应出现问题。

我已经在最小的代码示例上对此进行了测试 odin 编译器版本 dev-2024-09 我使用的是 Kubuntu 24.04

package main

import "core:encoding/json"
import "core:fmt"
import "core:os"

main :: proc() {
    data, ok := os.read_entire_file_from_filename("test.json")
    if !ok {
        fmt.println("Data read incorrectly.")
        return
    }
    defer delete(data)

    json_data, err := json.parse(data)
    if err != .None {
        fmt.println("Json couldn't be parsed")
        return
    }
    defer json.destroy_value(json_data)

    root := json_data.(json.Object)
    value := root["val"].(json.Float)

    fmt.println("Value read:", value)

    value_negative_10: f64 = 10.0 * (-1)
    fmt.println("Value real:", value_negative_10)
}

测试.json

{
  "val": -10.0
}

有人知道这是怎么回事吗? 我计划将此作为一个错误提出,但我认为我应该首先询问这是否应该是这样。

json floating-point odin
1个回答
0
投票

供参考:这是一个已解决的错误。

core:strconv
parse_f64_prefix()
有错误,请参阅

(我写这篇文章是因为如果已解决的问题看起来没有答案,我会感到烦恼,如果这惹恼了其他人,我很抱歉)

© www.soinside.com 2019 - 2024. All rights reserved.