是否有工具可以知道某个值是否具有精确的二进制表示形式作为浮点变量?

我的C API有一个函数,它将double作为输入.只有3或4个值是有效输入,所有其他值都是无效输入和拒绝.

我想检查是否可以准确表示所有有效输入值,以便我可以避免epsilon检查以提高可读性.

是否有一个工具(最好在命令行上)可以告诉我十进制值是否具有精确的二进制表示作为浮点值?

解决方法

这是一个完全符合您要求的 Python片段;它需要 Python 2.7或Python 3.x. (早期版本的Python对浮点转换不太仔细.)
import decimal,sys
input = sys.argv[1]
if decimal.Decimal(input) == float(input):
    print("Exactly representable")
else:
    print("Not exactly representable")

用法:在名称’exact_representable.py’下保存脚本后,

mdickinson$python exactly_representable.py 1.25
Exactly representable
mdickinson$python exactly_representable.py 0.1
Not exactly representable
mdickinson$python exactly_representable.py 1e22
Exactly representable
mdickinson$python exactly_representable.py 1e23
Not exactly representable

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...