问题标签 [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.
floating-point - 您将存储工程数据的计量单位是什么?
在我们的应用程序中,我们目前决定将所有工程数据存储在我们的 SI 数据库中。
我担心我们可能会冒在我们的数据库或 .NET 数字类型中没有足够精确度和准确性的风险。我还担心我们可能会看到浮点数学的伪像(尽管这可能是一个问题)。
例如,源数据可能是以 Psi(磅/平方英寸)表示的压力量(并从某些第 3 方服务中读取)。工程师会选择这种计量单位,因为(对于表示的数量)这将倾向于提供易于消化、人类可读的数字,而不需要科学记数法。
当我们“标准化”这个数字时,即当我们为了我们自己的持久性而转换这个数量时,我们可能会将它转换为 Pa(帕斯卡),这需要将这个数字乘以或除以某个其他可能很大的数字。
我们经常最终存储非常大或非常小的数字,更糟糕的是 - 我们可能会对这些数字进行进一步的计算。
目前我们使用ORACLE float 和System.Double。
人们对此有何看法?
更新
进一步的研究发现了即将推出的 F# 语言(在我写的 CTP 中)对度量单位的支持。
看来我们将能够让 F# 理解用户输入,例如:
我们还可以创建自己的派生单位和单位系统。
(来源:msdn.com)
algorithm - 如何最好地总结大量浮点数?
想象一下,您有大量各种大小的浮点数。计算总和的最正确方法是什么,并且误差最小?例如,当数组看起来像这样时:
然后你用一个简单的循环从左到右加起来,比如
每当您将较小的数字相加时,可能会低于精度阈值,因此误差会越来越大。据我所知,最好的方法是对数组进行排序并开始从最低到最高的数字相加,但我想知道是否有更好的方法(更快,更精确)?
编辑:感谢您的回答,我现在有一个工作代码可以完美地总结 Java 中的双精度值。它是来自获胜答案的 Python 帖子的直接端口。该解决方案通过了我所有的单元测试。(这里有一个更长但经过优化的版本Summarizer.java)
sql-server-2005 - SQL Server 2005 中的一个数字可以存储多少位?
我有一个来自 47306832975095894070.85314746810624532 的 Oracle 数据库的号码。当我将它带入 SQL Server 时,它肯定不会显示那么多数字。它显示为 4.73068329750959E+19,该字段定义为 FLOAT。
我认为这可能包括所有有效数字,但有人问我这个数字是否可以完全按照 Oracle 的方式存储。是否有另一种数据类型可以存储所有数字?SQL Server 2005 中有没有办法以非指数形式显示数字,而是显示所有存储的数字?
tsql - T-SQL 小数除法精度
有谁知道为什么,使用 SQLServer 2005
给我11.74438969709659,
但是当我将分母上的小数位增加到 15 时,我得到的答案不太准确:
给我 11.74438969
python - 将浮点数限制为两位小数
我想a
四舍五入到13.95。
该round
功能无法按我预期的方式工作。
java - “new BigDecimal(13.3D)”导致不精确的“13.3000000000000007105..”?
Java 怎么BigDecimal
会这么痛苦?
是否存在需要结果 1 的情况?我知道 Java 1.5 改变了toString()
方法,但这是预期的结果吗?
我也意识到BigDecimal
有doubleValue()
等,但我正在使用的库有用地使用 atoString()
并且我无法改变它:-(
干杯。
c - GMP mpf_add 的精度丢失。我的数字哪里去了?
我将两个负浮点数相加:
根据 Perl,使用 bignum 和 Math::BigFloat,答案是
但是,根据 GMP,使用下面的代码,答案是
我哪里出错了?剩下的“14467412141”怎么了?
样本输出:
PS我尝试添加一个mpf_set_default_prec
大于64(默认)值的调用,但没有效果。
c++ - C++中long double的精度是多少?
有谁知道如何找出long double
特定平台上的精度?我似乎在 17 位十进制数字后失去了精度,这与我刚使用double
. 我希望得到更多,因为double
在我的平台上用 8 个字节表示,而用long double
12 个字节表示。
在你问之前,这是针对欧拉计划的,所以是的,我确实需要超过 17 位数字。:)
编辑:感谢您的快速回复。我刚刚确认在我的系统上使用只能获得 18 位十进制数字long double
。
c# - 检查浮点值是否等于 0 是否安全?
我知道您通常不能依赖 double 或 decimal 类型值之间的相等性,但我想知道 0 是否是一种特殊情况。
虽然我可以理解 0.00000000000001 和 0.00000000000002 之间的不精确性,但 0 本身似乎很难搞砸,因为它什么都不是。如果你什么都不精确,那它就不再是什么了。
但我对这个话题了解不多,所以不由我说。
这总是会返回真实的吗?