问题标签 [precision]

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 投票
11 回答
19008 浏览

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

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

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

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

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

对此有什么想法吗?

0 投票
6 回答
3269 浏览

delphi - Delphi 中通过 writeln/readln 的实数精度

我的客户应用程序通过使用 writeln 和 readln 的文本文件导出和导入了很多 real 类型的变量。我试图增加所写字段的宽度,因此代码如下所示:

当我导出然后再次导入和导出并比较文件时,我得到最后两位数的差异,例如(此处的实际位数可能不正确,但你明白了):

这实际上对应用程序产生了影响,因此客户想知道我能做些什么。现在我不确定是否只有写入/读取才能做到这一点,但我想在我再次深入讨论堆栈之前我会提出一个快速的问题。我需要对此进行二进制处理吗?

这不是一个处理货币或其他东西的应用程序,我只是在文件中写入和读取值。我知道浮点有时有点奇怪,我认为其中一个例程(writeln/readln)可能会发生一些有趣的事情。

0 投票
10 回答
17266 浏览

c# - C# 中的双精度数比浮点数快吗?

我正在编写一个应用程序,它读取大型浮点数组并使用它们执行一些简单的操作。我正在使用浮点数,因为我认为它会比双精度数更快,但是在做了一些研究之后,我发现这个话题有些混乱。谁能详细说明这一点?

0 投票
10 回答
1852 浏览

javascript - 2.9999999999999999 >> .5?

我听说您可以将数字右移 0.5 而不是使用 Math.floor()。我决定检查它的限制以确保它是合适的替代品,因此我检查了以下值并在 Google Chrome 中得到以下结果:

经过一番摆弄,我发现在 Chrome 和 Firefox 中,当右移 0.5 时,将产生 2 的最大可能值为 2.9999999999999997779553950749686919152736663818359374999999¯(重复 9)。IE中的数字是2.9999999999999997779¯。

我的问题是:数字 .0000000000000007779553950749686919152736663818359374 的意义是什么?这是一个非常奇怪的数字,它真的激起了我的好奇心。

我一直在尝试找到答案或至少某种模式,但我认为我的问题在于我真的不了解按位运算。我原则上理解这个想法,但是将位序列移动 0.5 对我来说根本没有任何意义。任何帮助表示赞赏。

为了记录,奇怪的数字序列随着 2^x 的变化而变化。以下数字中仍能正确截断的最高可能值:

0 投票
14 回答
18167 浏览

floating-point - 为什么我看到一个双变量初始化为 21.4 之类的某个值作为 21.399999618530273?

在调试器中,这些显示为11.63100000000000021.399999618530273

我怎样才能避免这种情况?

0 投票
7 回答
432 浏览

.net - double in .net

If I have the following code (this was written in .NET)

Why doesn't i equal 0.3?
Any ideas?

0 投票
6 回答
9217 浏览

math - Lua 的标准(或最受支持的)大数(任意精度)库是什么?

我正在处理无法四舍五入的大量数字。使用 Lua 的标准数学库,似乎没有方便的方法来保持超出某些内部限制的精度。我还看到有几个库可以加载以处理大数字:

  1. http://oss.digirati.com.br/luabignum/
  2. http://www.tc.umn.edu/~ringx004/mapm-main.html
  3. http://lua-users.org/lists/lua-l/2002-02/msg00312.html(可能与#2相同)
  4. http://www.gammon.com.au/scripts/doc.php?general=lua_bc(但我找不到任何来源)

此外,如果建立了绑定,可以从 Lua 调用 C中的许多库。

您对这些库中的一个或多个有任何经验吗?

0 投票
23 回答
233634 浏览

java - 在 Java 中使用 double 保持精度

上面的代码打印:

我如何才能让它打印(或能够将其用作)11.4?

0 投票
5 回答
6264 浏览

javascript - 如何在 JavaScript 中为 Number.toFixed 编写原型?

我需要使用 JavaScript 将十进制数字四舍五入到六位,但我需要考虑旧版浏览器,所以我不能依赖 Number.toFixed

toExponential、toFixed 和 toPrecision 的一大亮点是它们是相当现代的构造,直到 Firefox 1.5 版才在 Mozilla 中得到支持(尽管 IE 从 5.5 版开始支持这些方法)。虽然使用这些方法大多是安全的,但旧版浏览器会损坏,因此如果您正在编写公共程序,建议您提供自己的原型,以便为旧版浏览器的这些方法提供功能。

我正在考虑使用类似的东西

向旧浏览器提供原型的最佳方法是什么?