问题标签 [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 投票
5 回答
29560 浏览

c - 如何使用“%f”将双精度值填充到具有正确精度的字符串中

我正在尝试使用这样的方法填充具有双精度值的字符串sprintf

但精度被削减到小数点后六位。我需要大约 10 位小数来保证精度。

怎样才能做到这一点?

0 投票
7 回答
1283 浏览

c++ - cout 打印“-0”而不是“0”

为什么这个伟大的代码输出-0而不是0像人们期望的那样?

0 投票
9 回答
26400 浏览

c - 确定字符串是 ANSI C 中的整数还是浮点数

仅使用 ANSI C,确定 C 样式字符串是整数还是实数(即浮点数/双精度数)的最佳方法是什么?

0 投票
10 回答
26926 浏览

c - 在x86上将float转换为int的最快方法是什么

您知道在 x86 CPU 上将浮点数转换为 int 的最快方法是什么。对于以下任意组合,最好在 C 或程序集中(可以在 C 中内联):

  • 32/64/80 位浮点数 -> 32/64 位整数

我正在寻找一些比让编译器更快的技术。

0 投票
11 回答
19008 浏览

parsing - 如何从字符串中手动解析浮点数

当然大多数语言都有这方面的库函数,但假设我想自己做。

假设像在 C 或 Java 程序中一样给出浮点数('f' 或 'd' 后缀除外),例如“ 4.2e1”、“ .42e2”或简单的“ 42”。一般来说,我们有小数点前的“整数部分”、小数点后的“小数部分”和“指数”。这三个都是整数。

查找和处理单个数字很容易,但是如何将它们组合成类型值floatdouble不丢失精度?

我正在考虑将整数部分乘以 10^ n,其中n是小数部分中的位数,然后将小数部分添加到整数部分并从指数中减去n 。例如,这实际上变成4.2e142e0。然后我可以使用该pow函数计算 10^指数并将结果与​​新的整数部分相乘。问题是,这种方法是否能保证整个过程的最大精度?

对此有什么想法吗?

0 投票
5 回答
3243 浏览

c++ - 将浮点异常转换为 C++ 异常

是否可以在 x86 Linux 上将浮点异常(信号)转换为 C++ 异常?

这是出于调试目的,因此不可移植性和缺陷是可以的(例如,如果不能 100% 保证调用所有析构函数)。

0 投票
5 回答
6760 浏览

c# - 调试/发布模式中的浮点/双精度

C#/.NET 浮点运算在调试模式和发布模式之间的精度是否不同?

0 投票
6 回答
1780 浏览

c++ - 为什么我要使用 2 的补码来比较两个双精度数,而不是将它们的差异与 epsilon 值进行比较?

引用herehere ...为什么我会在epsilon方法上使用二进制补码?对于大多数情况,epsilon 方法似乎已经足够了。


更新: 我纯粹是在寻找一个理论上的原因,为什么你会使用一个而不是另一个。我一直使用 epsilon 方法。

有没有人成功使用 2 的补码比较?为什么?为什么不?

0 投票
6 回答
9177 浏览

c++ - 我在哪里可以找到世界上最快的 atof 实施?

我正在寻找针对美国英语语言环境、ASCII 和非科学记数法优化的 IA32 上极快的 atof() 实现。windows 多线程 CRT 在每次调用 isdigit() 时都会检查语言环境的变化,因此在这里很糟糕。我们目前的最佳表现源自 perl + tcl 的 atof 实现中的最佳表现,其性能比 msvcrt.dll 的 atof 高出一个数量级。我想做得更好,但我没有想法。BCD 相关的 x86 指令似乎很有希望,但我无法让它胜过 perl/tcl C 代码。任何 SO'ers 都可以挖掘到最好的链接吗?也欢迎基于非 x86 汇编的解决方案。

基于初步答案的澄清:

对于此应用程序,~2 ulp 的不准确性很好。
要转换的数字将小批量通过网络以 ascii 消息的形式到达,我们的应用程序需要以尽可能低的延迟进行转换。

0 投票
3 回答
9098 浏览

sql-server - SQL Server 2005 数值精度损失

调试一些与金融相关的 SQL 代码发现了 numeric(24,8) 数学精度的奇怪问题。

在您的 MSSQL 上运行以下查询,您将得到 A + B * C 表达式结果为 0.123457

选择 A、B、C、A + B * C FROM ( SELECT CAST(0.12345678 AS NUMERIC(24,8)) AS A, CAST(0 AS NUMERIC(24,8)) AS B, CAST(500 AS NUMERIC(24) ,8)) 作为 C) T

所以我们丢失了 2 个重要符号。尝试以不同的方式解决此问题,我将中间乘法结果(为零!)转换为数字(24,8)可以正常工作。

最后有一个解决方案。但是我仍然有一个问题 - 为什么 MSSQL 会以这种方式运行,以及在我的示例中实际发生了哪些类型转换?