【发布时间】:2016-09-29 20:12:30
【问题描述】:
我想从标准输入读取浮点数和双精度数并保存其精度(浮点数后完全相同的数字)并能够按原样输出(cout/printf)。这样做最方便(也是最简单的方法)是什么? 谢谢!
【问题讨论】:
-
由于浮点/双精度不是无限精度,唯一可靠的方法是将其作为字符串读入,并与转换后的浮点/双精度保持原始字符串。
-
这是不可能的。原因很明显 - 在标准输入/标准输出中,浮点数表示为十进制数(这是标准的要求)。 C 或 C++ 标准没有指定浮点数的内部表示,因此不可能编写从字符串到浮点数/双精度和向后的可移植转换。在一般情况下,即使使用数字的事实标准表示也不允许十进制到二进制的可逆转换。举例说明:尝试将 1/3 转换为十进制表示法并返回,保持精度。
标签: printf scanf cout cin floating-accuracy