微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我的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 举报,一经查实,本站将立刻删除。

相关推荐