printf 如何在小数点后打印 53 位数字?

什里拉姆

我试图以给定的精度打印数字的平方根。

int N;
int precision;
cin>>N>>precision;
printf("%.*lf",precision,std::sqrt(N));

这是 clang++ 打印出来的:

%./a.out
2 100
1.4142135623730951454746218587388284504413604736328125000000000000000000000000000000000000000000000000

它能够打印超过 50 位的精度?我以为双打只能处理 17 位数字?

我在苹果硅 m1 上运行 clang++

用户4815162342

在这组 64 位浮点数中,与分数完全对应sqrt(2)的数字最为接近正是这个有理数或十进制数,按照您告诉它的精度进行打印。6369051672525773/45035996273704961.4142135623730951454746218587388284504413604736328125printf()

17 位限制是指区分任意两个浮点数所需的有效十进制数字的数量。换句话说,如果您打印一个精度为 17 位有效数字的浮点数,然后读回它,您可以保证得到与开始时相同的浮点数(到最后一位)。

另一个方向的转换,从十进制数开始,将其转换为浮点数(即使用 53 位分子和 2 的幂分母将其近似为最接近的分数),然后将其显示为十进制,只保证保留 15 位十进制数字。例如,十进制数.1234567890123456789将近似为8895999183877727/72057594037927936,即0.12345678901234567736988623209981597028672695159912109375在这种情况下,1打印的浮点值的前 17 位(从 开始计数)对应于原始数字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

printf:如何在小数点上对齐数字

如何在cpp中的小数点后打印特定位数的数字?

如何在SQL中也获取小数点后的4位数字,包括小数点前

小数点后如何打印不同位数的数组?

为什么带有%f的printf()有时会在小数点后丢失一位数字?

如何在vb.net中写一个不带小数点后12位数字的小数?

printf%f小数点后只有2个数字?

如何截断小数点后的位数

如何在 Elixir 中获取小数点后的数字?

如何在double中删除小数点后的数字?

小数点后仅需要2位数字

APi解析小数点后2位数字?

如何在MATLAB中用小数点后一位数字格式化科学计数法?

如何在Python中将两位数字放在小数点后两位

如何检查小数点后的数字?

小数点后如何获取数字?

打印小数点后最少位数的浮点数

如何在Angular中将数字显示在小数点后2位但将其存储在小数点后4位

Swift:如何比较CGFloat小数点后的前n位数字?

如何舍入小数点后两位数字?

PostgreSQL:如何选择表中小数点后仅两位数字的值?

如何打印浮点数小数点后的前三位数?

如何使用System.printf在十进制后仅输出两位数字?

如何打印小数点前后的固定位数

printf 后打印的额外数字

如何使用angualrjs在小数点后显示一位数字及其数字单位?

如何在PHP中获取小数点后两位数

如何读取小数点后所需位数的输入值?

如何使用BigDecimal查找小数点后的位数?