floating-accuracy相关内容
我知道php浮点数are not accurate,我知道像BCMath和GMP这样的解决方案。我在本地WAMP server和另一台服务器(使用Nginx)上测试了以下代码: $size = 0.0006; $data = json_encode( array("size" => $size)); var_dump($data); WAMP上的输出: string '{"size
..
比较小数的最佳方式是什么? 假设我有两个值,如3.45和3.44,什么是可靠比较它们的最佳方式? 我在考虑将所有数字存储为345和344,以便我只比较整数,并且只向用户显示带有小数点的格式化数字。 另一种解决方案是使用自定义函数来测试差异,当差异小于0.01时,数字应该相等。 其他可能的解决方案(更好的解决方案)有哪些? 推荐答案 最常见的技术是使用epsilo
..
我说的银行家四舍五入是指 “四舍五入,平分” ASrecommended by IEEE 754: 舍入到最接近的值;如果数字落在中间,则舍入到具有偶数(零)最低有效位的最接近的值。这是二进制浮点的默认设置,也是十进制的推荐默认设置。 据说此方法优于 “四舍五入到最近,平局离零” on the grounds that它“将对四舍五入的数字求和时的预期误差降至最
..
调试一些金融相关的 SQL 代码发现了一个关于 numeric(24,8) 数学精度的奇怪问题. 在您的 MSSQL 上运行以下查询,您将得到 A + B * C 表达式结果为 0.123457 选择 A,乙,C,A + B * C从(选择 CAST(0.12345678 作为数字(24,8))作为 A,CAST(0 作为数字(24,8))作为 B,铸造(500 作为数字(24,8))
..
我知道 一个类似的问题,但我想征求人们对我的算法的意见,以尽可能准确地将浮点数与实际成本相加. 这是我的第一个解决方案: 将所有数字放入最小绝对堆中.//按照下面的评论进行编辑弹出两个最小的.添加它们.将结果放回堆中.继续,直到堆中只有 1 个数字. 这个需要 O(n*logn) 而不是正常的 O(n).真的值得吗? 第二种解决方案来自我正在处理的数据的特征.这是一个巨大的正数列表
..
我有一个非常烦人的问题,即 Java 中的浮点数或双精度数很长.基本上这个想法是,如果我执行: for (float value = 0.0f; value 我得到的是: 0.00.10.20.30.40.50.60.700000050.80000010.9000001 我知道有浮动精度误差的累积,但是,如何摆脱这个?我尝试使用 doubles 将错误减半,但结果还是一样. 有什么
..
我正在从 sqrt 函数(用于 64 位双精度)>fdlibm 到我目前正在使用的模型检查工具 (cbmc). 作为我工作的一部分,我阅读了很多关于 ieee-754 标准的内容,但我认为我不了解基本操作(包括 sqrt)的精度保证. 测试我的 fdlibm 的 sqrt 端口,我在 64 位双精度上使用 sqrt 得到以下计算: SQRT(19770615168252036055552
..
我正在使用一个名为 indata 的双精度数组(在堆中,使用 malloc 分配)和一个名为 sum 的本地双精度. 我写了两个不同的函数来比较indata中的值,得到不同的结果.最终,我确定差异是由于一个函数在条件测试中使用了表达式,而另一个函数在同一条件测试中使用了局部变量.我希望这些是等价的. 我的函数 A 使用: if (indata[i]+indata[j] > max)
..
当一个浮点数需要在浮点数后截断到某位时,事实证明这并不容易.例如,如果必须截断到该点之后的第二个数字,则数字应该是 45.8976 =>45.89, 0.0185 =>0.01 (点后第二位不按点后第三位四舍五入). round()、number_format()、sprintf()等函数将数字取整并打印出来 45.8976 =>45.90, 0.0185 =>0.02 我遇到了
..
我有一个 MEMS IMU,我一直在其上收集数据,我正在使用 pandas 从中获取一些统计数据.每个周期收集 6 个 32 位浮点数.对于给定的收集运行,数据速率是固定的.数据速率在 100Hz 和 1000Hz 之间变化,采集时间长达 72 小时.数据保存在一个平面二进制文件中.我是这样读取数据的: 将 numpy 导入为 np将熊猫导入为 pddataType=np.dtype([('a'
..
我似乎在使用浮点数时失去了很多精度. 例如我需要求解一个矩阵: 4.0x -2.0y 1.0z =11.01.0x +5.0y -3.0z =-6.02.0x +2.0y +5.0z =7.0 这是我用来从文本文件中导入矩阵的代码: f = open('gauss.dat')行 = f.readlines()f.close()j=0对于行中的行:bits = string.split(
..
在一系列浮点算术运算之后与浮点数进行小于等于比较是否有“最佳实践"? 我在 R 中有以下示例(尽管该问题适用于任何使用浮点的语言).我有一个双 x = 1 在其上应用一系列加法和减法.最后 x 应该正好是一,但不是由于浮点运算(据我收集).示例如下: >stop_times expr some_arbitrary_factor 的指南?
..
我知道大多数小数都没有精确的浮点表示(浮点数学有问题吗?).p> 但我不明白为什么 4*0.1 可以很好地打印为 0.4,但 3*0.1 不是,当这两个值实际上都有丑陋的十进制表示: >>>3*0.10.30000000000000004>>>4*0.10.4>>>从十进制导入十进制>>>十进制(3*0.1)十进制('0.300000000000000004440892098500626161
..
每次我开始一个新项目并且需要比较一些浮点或双精度变量时,我都会编写如下代码: if (fabs(prev.min[i] - cur->min[i]) max[i])
..
用 a_float == b_float 之类的东西比较两个浮点数是在找麻烦,因为 a_float/3.0 * 3.0 可能不等于 a_float 由于舍入错误. 通常的做法是 fabs(a_float - b_float)
..
我在 python 的输出中遇到负零;例如,它的创建如下: k = 0.0打印(-k) 输出将是 -0.0. 但是,当我将 -k 与 0.0 进行比较时,结果为 True.0.0 和 -0.0 之间有什么区别吗(我不在乎它们可能具有不同的内部表示;我只关心它们在程序中的行为.)有什么我应该注意的隐藏陷阱吗? 解决方案 查看 -0(维基百科中的数字) 基本上 IEEE 确实定
..
我正在尝试将十进制数字截断为小数位.像这样的: 5.467 ->5.46985.943 ->985.94 toFixed(2) 做了几乎正确的事情,但它使值四舍五入.我不需要四舍五入的值.希望这在 javascript 中是可能的. 解决方案 upd: 所以,事实证明,舍入错误总是会困扰您,无论您如何努力弥补它们.因此,应该通过精确地用十进制表示数字来解决这个问题. Numbe
..
可能重复: 浮点不准确示例 double a = 0.3;标准::cout.precision(20);std::cout
..
>>>浮动(str(0.65000000000000002))0.65000000000000002>>>浮动(str(0.47000000000000003))0.46999999999999997 ??? 这里发生了什么?如何将 0.47000000000000003 转换为字符串并将结果值转换回浮点数? 我在 Windows 上使用 Python 2.5.4. 解决方案 st
..
我在 javascript 中有大量数值 y.我想通过将它们四舍五入到最接近的 x 倍数来对它们进行分组,并将结果转换为字符串. 如何解决烦人的浮点精度问题? 例如: 0.2 + 0.4 = 0.6000000000000001 我尝试过的两件事: >>>y = 1.23456789>>>x = 0.2>>>parseInt(Math.round(Math.floor(y/x))
..