我的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
原文地址:https://www.jb51.cc/c/119787.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。