C++精度问题
Issues with C++ Precision
我看到许多帖子谈到我们如何在C++中以给定的精度显示数字,但我想知道是否有办法显示非重复出现的数字,例如 x.0 和 setprecision 方法指定的宽度重复数字?
如果您事先知道要打印的数字是否显示重复的小数扩展,那么您可以简单地发出如下语句:
if is_recurring:
print using expanded format
else
print using fixed format
我想你事先不知道。一般来说,计算机也无法知道它。
它将如何测试几个小数(如果使用双精度,则约为 15)是否表示重复的小数?
此外,您想如何打印它?以经典为例:
3227 / 555 = 5.814414414414414
我应该如何打印?喜欢这个?
5.8144
还是那样?
5.8144
***
一般来说,这似乎是一个非常难以解决的问题。
听起来你真正想要的是修剪尾随零。机器不知道一个数字是否真的是一个"循环数",这只是一个有理数的花哨名称,其分母在数值基数上相对素数,因为浮点数学不是基于有理数的。
正如 Adam 所提到的,默认输出样式已经是省略尾随零。这与数学没有太大关系;它只是从字符串末尾删除字符。
就标准而言,ios_base::fixed
和ios_base::scientific
标志决定了定性格式。如果两者都未设置,则输出等效于 printf
的%g
格式说明符。
据man printf
,
尾随零将从结果的小数部分删除;仅当小数点后跟至少一位数字时,才会显示小数点。
尽管有上述规则,但要在最后获得.0
,您必须执行诸如打印到临时字符串之类的操作,在它搜索小数点,如果未找到fixed
则以模式重试。
相关文章:
- 高精度双精度的 Sprintf 格式化问题
- C++正确书写和打印复数精度 (cout) 的问题?
- 从 C++ 中的函数返回双精度的问题
- C++,遇到将双精度转换为整数的问题
- 在浮点精度成为一个问题之前,可以将多少个浮点值加在一起
- ceil、floor 和 round 在转换为整数时会遇到精度损失问题吗?
- 向量<对<双精度,双精度>>给出问题
- 浮点倍数和股息精度问题
- 使用boost多精度的数学精度问题
- 使用 qt 和 opengl、定时精度和垂直同步问题、c++ 显示图像
- 使用设置精度在C++中舍入小数点时出现问题
- 使用提升多精度库时出现问题
- 二进制表达式的语义问题无效操作数("双精度"和"双精度")
- 着色器中实现双精度cos()的结果是NaN,但在CPU上运行良好.出了什么问题
- 精度问题 - 远离原点的观点 - OpenGL C++
- 如何将双精度数组从 VB6 传递到 VC++.这段代码有什么问题
- C++精度问题
- fmod 输出有问题(长双精度、长双精度)
- 更改为整数时的双精度值编程问题
- 光线投射算法中的精度问题