问题标签 [significant-digits]
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 - binary32 和 binary64 的有效十进制数字
根据Wikipedia,binary32格式具有6 到 9位有效十进制数字精度,64 格式具有15 到 17 位。
我发现这些有效的十进制数字是使用尾数计算的,但我不明白如何计算它?任何的想法 ?
32bit格式的尾数=24bits,64bit格式的尾数=53bits
r - R - RStudio 在创建双精度大数值向量时挂起/崩溃
我有一个包含 500 个值的数值向量,我试图将其加载到 R 中以进行一些图形计算和显示,并且每次我尝试我的客户端挂起/崩溃 (RStudio)。系统不会立即崩溃,而是在我的分配语句的右括号之后的控制台中无限期挂起一个加号“+”,如下所示:
通常,您可以通过点击退出键从这种“等待更多信息”状态中恢复,这会使控制台回到带有光标的输入模式。但是,在这种情况下,它会导致崩溃(Windows“X 程序已停止工作”消息)。R 控制台中不显示任何错误消息。我检查以确保我关闭了最后的括号,并且实际上是在有效和无效的行之间复制粘贴代码的第一部分,因此它们在语法上应该是相同的,这希望消除任何可能导致的通过拼写错误(帖子末尾的确切代码)。这让我相信我看到的行为是由数字的大小/数量/类型引起的。
据我了解并可以在网上找到与向量大小相关的内容,R 中没有“最大大小”,但如果我尝试做一些像创建向量这样简单的事情,那么我就会崩溃。我可以加载有限数量的它们(比如 160 个),但 500 个显然太多了。
我正在尝试加载的一些示例值:
这些数字是从另一个 Java 程序输出的双精度值,因此它们在小数点后有大量数字,有时它们以 E 表示法输出,我不确定 R 是否接受,所以起初我认为这可以是一个潜在的原因,即使我在快速扫描数据时没有看到任何 E。我第一次尝试解决这个问题是将我的输出转换为小数点后只有 5 位数字,当我有 500 个元素时,这仍然会导致相同的挂起/崩溃行为。示例值:
最终,当我将后十进制有效数字减少到 2 时(或者当我减少向量中的元素数量时),我成功加载了它,没有挂起/崩溃,但是我失去了很多精度,我没有不要认为将我的向量分成 4 或 5 部分是可以接受的解决方案。值得庆幸的是,在这一点上,精度的损失并不是一个绝对的交易破坏者,但我想知道最好的方法是使用具有大量小数位的值。我不认为 500 是一个很大的向量,5 位小数也不是很多地方,所以应该有办法做到这一点。我是否需要从文件中读取输入而不是直接将值放入 .R 文件中?R是否无法处理大量有效数字?或者这只是一个 RStudio 问题,我需要进入命令行 R(假设这是可能的)或使用不同的客户端?
当我收到这些错误时,我正在运行的确切行(注意,这些是 looooong):
此外,版本信息是:
binary - 浮点精度是可变的还是不变的?
对于浮点数(即float
、double
或long double
)是否具有一个且只有一个精度值,或者具有可以变化的精度值,我不断得到不同的答案。
一个名为浮点与双精度的主题似乎暗示浮点精度是绝对的。
但是,另一个名为float 和 double 之间的区别的主题说,
通常,双精度具有15 到 16位十进制数字
另一个消息来源说,
float 类型的变量通常具有大约7 位有效数字的精度
double 类型的变量通常具有大约16 位有效数字的精度
如果我使用的敏感代码在我的值不准确时很容易中断,我不喜欢参考上述近似值。因此,让我们直截了当。浮点精度是可变的还是不变的,为什么?
binary - 可以在不丢失重要性的情况下转换为二进制并返回十进制的最重要的十进制数字精度是 6 还是 7.225?
我遇到了两种不同的浮点数精度公式。
⌊(N-1) log 10 (2)⌋ = 6 位十进制数字(单精度)
和
N log 10 (2) ≈ 7.225 个十进制数字(单精度)
其中N = 24 个有效位(单精度)
第一个公式位于W. Kahan 教授撰写的“ IEEE Standard 754 for Binary Floating-Point Arithmetic ”的第 4 页顶部。
第二个公式可在IEEE 754 单精度二进制浮点格式部分下的 Wikipedia 文章“单精度浮点格式”中找到: binary32 。
对于第一个公式,W. Kahan 教授说
如果一个十进制字符串最多有 6 个 sig。十二月 转换为 Single,然后转换回相同数量的 sig。dec.,那么最终的字符串应该与原始字符串匹配。
对于第二个公式,维基百科说
...总精度为 24 位(相当于 log 10 (2 24 ) ≈ 7.225 decimal digits)。
两个公式的结果(6 位和 7.225 位十进制数字)是不同的,我希望它们是相同的,因为我认为它们都是为了表示可以转换为浮点二进制然后再转换回来的最重要的十进制数字以与它开始时相同的有效小数位数进行十进制。
为什么这两个数字不同,可以转换为二进制并返回十进制而不丢失重要性的最重要的十进制数字精度是多少?
matlab - 在matlab中编写具有不同精度(有效数字)的矩阵列
我有一个矩阵 m=[10 15.675; 13.5 34.987; 20 55.5];我想把这个矩阵写在 o txt 文件上。我想对每一列使用不同的精度。例如,1 代表第一列,2 代表第二列。
期望的输出:
10.0 15.68
13.5 34.99
20.0 55.50
我目前正在使用 dlmwrite(fileName, m,'-append','delimiter','\t','precision',2,'roffset' ,1,'newline','pc');
但是,这适用于 '.' 之后的 2 显着。对于所有列。
有没有办法为矩阵的每一列应用不同的有效数字?
r - R:将 p 值舍入到 xtable 中的两位有效数字,并将 ReporteRs 导出到 Latex/Office/LibreOffice
我正在使用 和 的组合将各种对象(、's、's 等)的汇总表导出xtable
到Latex / rtable
Word /Powerpoint。但是,我不太喜欢默认方式,其中 p 值在逗号后以固定位数给出。相反,我更愿意它给我 p 值的格式与使用带有 的基本 R 函数得到的格式相似,即,将 p 值四舍五入为两位有效数字——在本例中为 4.2e-17 和 0.25)。ReporteRs
aov
glm
lm
format.pval()
digits=2
例如
我希望 p 值以与 中类似的方式格式化summary(fit)
,但是(右对齐,四舍五入到两位有效数字,在本例中为 4.2e-17 和 0.25)。任何人都知道如何以通用方式实现这一点,理想情况下,对于由 支持的所有对象给出的 p 值xtable
?
编辑:在下面的帮助下,我现在制作了一个带有辅助函数的[small package export
]table2doc
,table2ppt
并将table2html
先前显示的 R stats 对象导出到 Word、Powerpoint 或 HTML(并使用函数graph2ppt
并将graph2doc
当前活动的图形导出到 Powerpoint 或 Word),见
https://cran.r-project.org/web/packages/export/index.html和
https://github.com/tomwenseleers/export
python - 增加 pyplot 游标中的有效数字
我有一个使用 pyplot 绘制的函数。当我将光标移到窗口上时,我可以在窗口左下角看到光标位置的 X 和 Y 值(显示为,例如,x = 4.27567e+06 y = 6.98764e- 09)。
如何更改这些值的有效位数?我尝试过使用轴设置和刻度设置,但似乎没有帮助。
正如您在上面给出的示例中看到的那样,现在分辨率是 6 位有效数字,但我需要 8 位或更多位的分辨率。
仅供参考,我正在绘制的数组中的点之间的间隔比我需要显示的要小得多,所以这不是问题。
matplotlib 中是否有执行此操作的命令?
谢谢。
r - 找到两个非常相似的值之间的第一个显着差异数字
我正在尝试重现导致数据集的计算data.ref
。我想通过将参考数据与我的计算结果进行比较来测试我当前的实现效果如何,data.my
. 由于数据的每一列都应该在列内具有可比较的大小,但不一定在列之间,我一直在看
将错误放在可比较的范围内。然而,由于数据最终将被四舍五入,我真正想做的只是快速而肮脏地检查数据有多少有效数字值得一致。也就是说,由于我期望data.ref
并且data.my
彼此非常接近,我想回答这个问题:每对对应条目不同的第一个有效数字是多少?
是否有执行此操作的 R 函数?
c++ - C++ 中的重要数字
我编写了一个程序来计算一系列值,并且所有值都是特别冗长的双精度数。我想打印这些值,每个值显示 15 个有效数字。这是一些说明我遇到的问题的代码:
只显示 setprecision 尾随零,所以我添加了我在本网站的其他答案中看到的固定。但是,现在我似乎只有 15 个小数位,并且对于不是 0 的值。这不是我想要的。您可以从上面的输出中看到这一点:
第一个数字有 15 个无花果,但第二个有 16 个。我能做些什么来解决这个问题?
编辑:我被特别要求使用 setprecision,所以我无法尝试 cout.precision。