问题标签 [double-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.
javascript - JavaScript 是否具有双浮点数精度?
我知道这是一个奇怪的问题,但是 JavaScript 是否有能力使用双精度而不是单浮点数?(64 位浮点与 32 位。)
mips - 带 32 位寄存器的双精度整数减法 (MIPS)
我正在学习计算机算术。我使用的书(帕特森和轩尼诗)列出了以下问题。
编写 mips 代码对 64 位数据进行双精度整数减法。假设第一个操作数在寄存器 $t4(hi) 和 $t5(lo) 中,第二个在 $t6(hi) 和 $t7(lo) 中。
我对答案的解决方案是
但是作者针对此问题给出的解决方案如下
对于有符号双精度整数,
对于无符号双精度整数,
我对sub/add
and操作差异的理解subu/addu
是溢出异常是在sub/add
而不是在subu/addu
. sub/add
和 和subu/addu
减/加操作数的位以及对有符号或无符号操作数的解释对结果没有影响,这与 in和slt
指令sltu
不同。
问题 1
我从作者给出的解决方案中推断出正在处理溢出检测,而我在我的解决方案中没有想到相同的解决方案。我对吗?还有什么我想念的吗?
问题 2假设我的上述推论是正确的,为什么在使用and
减去无符号双精度的情况下,作者提供的解决方案会关闭溢出检测?addu
subu
c# - C# 高双精度
我正在编写一个计算 PI 值并将其作为双精度值返回的函数。到现在为止还挺好。但是一旦函数到达小数点后 14 位,它就不能再容纳了。我假设这是因为双精度有限。我应该怎么做才能继续获得更多小数点后的数字?
java - 浮动到双重赋值
考虑以下代码片段
我得到的输出是
为什么将浮点数分配给双变量时会有近似值?
c# - 如何将 C# double 修剪为将存储在 sqlite 数据库中的值?
我注意到,当我x = 0.56657011973046234
在 sqlite 数据库中存储一个 double 值,然后再检索它时,我得到y = 0.56657011973046201
. 根据sqlite 规范和.NET 规范(我最初都懒得去阅读这两个规范:)这是预期的和正常的。
我的问题是,虽然高精度并不重要,但我的应用程序处理用户输入/选择代表基本 3D 信息的双精度数,然后对它们运行模拟以找到结果。并且此输入可以保存到 sqlite 数据库中,以便稍后重新加载和重新运行。
出现混淆是因为新创建的一系列输入显然会以稍微不同的方式模拟存储和重新加载后的相同输入(因为双精度值已更改)。这是合乎逻辑的,但不是可取的。
我还没有完全了解如何处理这个问题,但与此同时,我想将用户输入限制/限制为可以精确存储在 sqlite 数据库中的值。所以如果用户输入0.56657011973046234
,它实际上被转化为0.56657011973046201
。
但是,给定一个数字,我无法弄清楚数据库中将存储什么值,而实际上却无法从数据库中存储和检索它,这似乎很笨拙。有没有既定的方法来做到这一点?
floating-point - IEEE-754 浮点精度:允许多少误差?
我正在将sqrt
函数(用于 64 位双精度)从fdlibm 移植到我目前正在使用的模型检查器工具(cbmc)。
作为我工作的一部分,我阅读了很多关于 ieee-754 标准的内容,但我认为我不了解基本操作(包括 sqrt)的精度保证。
测试我的 fdlibm 的 sqrt 端口,我在 64 位双精度上使用 sqrt 得到以下计算:
(这个案例在我关于精度的测试中打破了一个简单的后置条件;我不确定这个后置条件是否可以通过 IEEE-754 实现)
为了进行比较,几个多精度工具计算如下:
可以看到,左边的第 17 个数字是不同的,这意味着如下错误:
问题 1:允许这么大的错误吗?
标准是说每个基本操作(+、-、*、/、sqrt)都应该在 0.5 ulps 以内,这意味着它应该等于数学上精确的结果,四舍五入到最接近的 fp 表示(wiki 说一些库只保证 1 个 ulp,但目前这并不重要)。
问题 2:这是否意味着,每个基本操作都应该有一个错误 < 2.220446e-16 和 64 位双精度数(机器 epsilon)?
我确实用 x86-32 linux 系统(glibc / eglibc)计算了相同的结果,并得到了与 fdlibm 相同的结果,这让我认为:
- a:我做错了什么(但是如何:
printf
会成为候选人,但我不知道这是否可能是原因) - b:错误/精度在这些库中很常见
c++ - C ++:0.和0.0之间的区别?
我很清楚0
和0.0
(int和double)之间的区别。
0.
但是和0.0
(请注意 . )之间有什么区别吗?
非常感谢提前,
阿克塞尔
objective-c - NSDate 和双精度问题
这是代码
输出是
间隔:32.456000 32.456000 32455.999970 32456.000000
为什么 NSDate 返回失去一些精度的值?
c++ - 如何正确和标准地比较浮点数?
每次我开始一个新项目并且需要比较一些浮点或双精度变量时,我都会编写如下代码:
然后我想摆脱这些神奇的变量 0.000001(和 0.00000000001 为双精度)和晶圆厂,所以我写了一个内联函数和一些定义:
所以我想知道是否有任何标准方法可以做到这一点?可能是一些标准的头文件?有浮动和双重限制(最小值和最大值)也很好