gpt4 book ai didi

c - 有没有一种工具可以知道一个值是否具有作为浮点变量的精确二进制表示?

转载 作者:IT王子 更新时间:2023-10-29 00:17:21 26 4
gpt4 key购买 nike

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

我想检查我所有的有效输入值是否都可以准确表示,这样我就可以避免 epsilon 检查以提高可读性。

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

最佳答案

这是一个完全符合您要求的 Python 片段;它需要 Python 2.7 或 Python 3.x。 (早期版本的 Python 对 float 转换不太谨慎。)

import decimal, sys
input = sys.argv[1]
if decimal.Decimal(input) == float(input):
print("Exactly representable")
else:
print("Not exactly representable")

用法:将脚本保存到名称“exactly_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 - 有没有一种工具可以知道一个值是否具有作为浮点变量的精确二进制表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8428837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com