从 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
}
有人知道这是怎么回事吗? 我计划将此作为一个错误提出,但我认为我应该首先询问这是否应该是这样。
供参考:这是一个已解决的错误。
core:strconv
parse_f64_prefix()
有错误,请参阅
(我写这篇文章是因为如果已解决的问题看起来没有答案,我会感到烦恼,如果这惹恼了其他人,我很抱歉)