小编amw*_*l04的帖子

不同语言的浮点精度

我目前正在进行坐标之间的距离计算,并且根据所使用的语言得出的结果略有不同。

计算的一部分是计算cosine给定值的radian。我得到以下结果

// cos(0.8941658257446736)

// 0.6261694290123146 node
// 0.6261694290123146 rust
// 0.6261694290123148 go
// 0.6261694290123148 python
// 0.6261694290123148 swift
// 0.6261694290123146 c++
// 0.6261694290123146 java
// 0.6261694290123147 c
Run Code Online (Sandbox Code Playgroud)

我想尝试并了解原因。如果16dp c四舍五入,过去是唯一的“正确”答案。我感到惊讶的是python,结果有所不同。

目前,这种微小的差异正在被放大,并且超过000个位置增加了不小的距离。

不太确定这是如何重复的。另外,我要求的是整体答案,而不是具体的语言。我没有计算机科学学位。

更新 我接受这可能是一个太宽泛的问题,我想我很好奇为什么我的背景不是CS。我感谢评论中发布的博客链接。

更新2

这个问题源于将服务从移植nodejsgoGo甚至更奇怪,因为距离的总和随多个值而变化,所以我现在无法运行测试。

给定一个坐标列表并计算距离并将它们加在一起,我得到不同的结果。我没有问一个问题,但似乎go会产生不同的结果。

9605.795975874069
9605.795975874067
9605.79597587407
Run Code Online (Sandbox Code Playgroud)

为了完整起见,这里是我正在使用的距离计算:

// cos(0.8941658257446736)

// 0.6261694290123146 node
// 0.6261694290123146 rust
// 0.6261694290123148 go
// 0.6261694290123148 python
// 0.6261694290123148 swift
// 0.6261694290123146 c++
// 0.6261694290123146 java …
Run Code Online (Sandbox Code Playgroud)

c c++ java go rust

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

打字稿中对象的通用类型数组

然后给出以下内容:

interface Datum {
    [k: string]: any
}

type Data = Datum[]

const inner = (data: Data) => {
    console.log(data)
};


const outer = (data: Data | Data[]) => {
    inner(data) // expect type error?
};

Run Code Online (Sandbox Code Playgroud)

我不明白,我怎么不明白一个type errorinner function call。我想这与generic. 想不出重写的方法。

javascript typescript

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

标签 统计

c ×1

c++ ×1

go ×1

java ×1

javascript ×1

rust ×1

typescript ×1