floating-point - 是否可以仅使用整数算术打印浮点数?
问题描述
我目前正在阅读有关浮点数的内容,并且偶然发现了以下练习:
以十进制格式打印浮点数。浮点数假定为 IEEE 754 single。必须打印所有十进制数字,包括由于舍入错误而获得的数字。例如,当用户输入 0.1 时,对应的浮点数显示为 0.1000000015,以此类推。
是否可以不使用浮点运算以十进制格式打印浮点数?我知道最简单的方法是将浮点数重复乘以 10,将其截断并在整数部分取最低有效十进制数字。但这样做需要浮点乘法和截断。
编辑:我的主要问题是关于打印小数部分。这就是我想要实现的。
步骤 0. 设置:
result = 0
addend = 5
步骤 1. 在其二进制表示中找到浮点数小数部分的开头(此处的反规范化将在手动计算中完成)。
Step 2. 标记小数部分的开头后,从左到右逐位读取。计算:
if (bit_read = 1)
result = result * 10 + addend
addend = addend * 5
重复步骤 2,直到小数部分结束。
步骤 3. 打印result
为整数。
这样的算法能否在所有法线和非规范范围内正常工作?
解决方案
如果您可以访问浮点数的二进制表示(在您的“不可知语言”中),您可以将每个位逐位读取到字符串 - 然后仅使用整数解析该字符串(将其打印为浮点数)。
所以在上述情况下,答案是:是的
更新 (问题编辑后)
可能是浮点表示的THIS描述及其解析对您的情况很有用。
推荐阅读
- javascript - 在来自孩子的父母通话数据中
- python - 由于 setup.py 安装的外部库,如何抑制警告?
- javascript - 无法读取类中未定义的属性
- javascript - 来自 Spring RestController 的 jQuery.get
- python - Python for循环遍历数组创建JSON文件
- android - 在使用带有动作 ACTION_GET_CONTENT 的意图时传递带有意图的附加内容
- tslint - tslint 如何禁用错误“someVariable 已声明但其值从未被读取”
- java - iText 7:表的看似不可预测的行为
- python - 如何使用 map 和 reduce 在 Python 中按步骤组成函数列表
- c++ - QT 资源不起作用