问题标签 [floating-point]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1121 浏览

c - floor() 是否返回完全可表示的东西?

在 C89 中, floor() 返回一个双精度值。以下是否保证工作?

我担心的是 floor 的结果在 IEEE 754 中可能无法完全表示。所以 d 得到类似 2.99999 的结果,x 最终为 2。

对于这个问题的答案是肯定的,一个 int 范围内的所有整数都必须可以精确地表示为双精度数,并且 floor 必须始终返回该精确表示的值。

0 投票
8 回答
8692 浏览

algorithm - “近似”最大公约数

假设您有一个浮点数列表,这些浮点数大约是一个公共数量的倍数,例如

2.468、3.700、6.1699

大约是 1.234 的所有倍数。你如何描述这个“近似 gcd”,你将如何计算或估计它?

与我对这个问题的回答密切相关。

0 投票
18 回答
36690 浏览

c++ - C++ IsFloat 函数

有人知道确定字符串值是否“符合”浮点数的便捷方法吗?

0 投票
1 回答
6429 浏览

sql-server - MSSQL 数据库中浮点字段中的 NaN 值

我正在研究从我的前辈那里继承的旧数据库。

其中,一些浮点字段包含 NaN,其中应该有一个空值。

以下 SQL 不起作用,因为它无法识别 NaN。

我怎样才能做到这一点?

0 投票
32 回答
4419958 浏览

python - 将浮点数限制为两位小数

我想a四舍五入到13.95

round功能无法按我预期的方式工作。

0 投票
6 回答
2356 浏览

python - 从 Python 中的字符串中提取负载平均浮点值的最佳方法是什么?

如果我有一个字符串,例如

“17:31:51 上升 134 天,11:26,1 个用户,平均负载:0.22、0.15、0.10”

最后提取 x3 负载平均值的最佳方法是什么?我写了一个正则表达式,但这是最有效/最快的方法吗?

0 投票
13 回答
42417 浏览

c++ - 浮点到二进制值(C++)

我想在 C++ 中获取一个浮点数,例如 2.25125,以及一个填充了二进制值的 int 数组,该二进制值用于将浮点数存储在内存中(IEEE 754)。

所以我可以取一个数字,最后得到一个带有浮点二进制值的 int num[16] 数组: num[0] 将是 1 num[1] 将是 1 num[2] 将是 0 num[3 ] 将是 1 等等...

将 int 放入数组并不困难,只是获取浮点数的二进制值的过程就是我卡住的地方。您可以只读取浮点变量的内存中的二进制文件吗?如果没有,我怎么能在 C++ 中做到这一点?

编辑:以这种方式进行比较的原因是我想学习在 C++ 中进行按位运算。

0 投票
34 回答
1006912 浏览

python - 如何使用小数范围()步长值?

有没有办法在 0 和 1 之间步进 0.1?

我以为我可以这样做,但它失败了:

相反,它说 step 参数不能为零,这是我没想到的。

0 投票
5 回答
4353 浏览

c# - C#浮动错误?0.1 - 0.1 = 1.490116E-08

这是怎么回事?!减法工作正常,直到我达到 0.1 - 0.1。我在 Visual c# 2008 中使用 nonoba.com API。

输出:

谢谢大家 - 我可能会使用小数类型,因为我通常会添加/减去漂亮的“圆形”数字。现在我会选择:

顺便说一句,我知道这实际上不会成为 c# 中的“错误”——我认为它可能是由于我的代码中的错误或缺乏理解,事实确实如此。

阅读完所有推荐读物后,我将得出结论,我的愚蠢是由于通常使用 ActionScript Number 类型,它可能具有十进制而不是二进制浮点 - 无论如何,它永远不会给出此输出。

0 投票
6 回答
846 浏览

c - 简单浮点运算的奇怪结果 - 糟糕的 FPU 内部状态?

我有一个软件项目,有时我会从小的、简单的浮点运算中得到奇怪的结果。我假设我错过了一些东西,并且想要一些关于如何调试以下问题的提示:

(使用的编译器是 MS VC 6.0,即 Microsoft C 编译器的 12 版)

第一个异常:

由于某种原因,计时器评估失败并且计时代码从未执行。在调试器中,可以看到触发条件实际上是正确的,但 FPU 拒绝找到肯定的结果。以下代码段没有问题,尽管它执行相同的操作。通过插入可能允许失败的虚假评估来回避这个问题。

我猜 FPU 状态在某种程度上被早期执行的操作所污染,并且有一些编译器标志会有所帮助?

第二个异常:

结果是#IND,即使调试器将等式计算为大约 0.05。当使用 fld 指令将 2.0F 值加载到 FPU 时,#IND 值出现在 FPU 堆栈中。上一条指令使用 fild 指令将整数值 2000 作为双浮点数加载。一旦 FPU 堆栈包含 #IND 值,所有内容都将丢失,但调试器再次评估公式没有问题。稍后,这些操作会返回预期的结果。

此外,FPU 问题再次发生在函数调用之后。我应该在每个新函数之后插入清除 FPU 状态的浮点操作吗?是否存在可能以某种方式影响 FPU 的编译器标志?

在这一点上,我很感激所有的提示和技巧。

编辑:我设法通过在顶部函数中首先调用汇编函数 EMMS 来避免这个问题。这样,FPU 就可以清除在调用我的代码的环境中创建或未创建的任何 MMX 相关垃圾。FPU 的状态似乎不是理所当然的。

//坦率