Python 使用浮点数创建if语句
我正在尝试创建一个转换程序,自动将转换后的文本复制到windows剪贴板。我正在尝试这样做,如果用户输入的数字被带到小数点后2位或更少,它会将转换后的结果复制到剪贴板的3位。如果用户输入的数字保留到小数点后3位或更多,则会将转换后的结果复制到剪贴板中保留到小数点后4位。当我运行代码时,我得到一个ValueError,但我不知道为什么。这是我得到的错误Python 使用浮点数创建if语句,python,python-3.x,if-statement,floating-point,Python,Python 3.x,If Statement,Floating Point,我正在尝试创建一个转换程序,自动将转换后的文本复制到windows剪贴板。我正在尝试这样做,如果用户输入的数字被带到小数点后2位或更少,它会将转换后的结果复制到剪贴板的3位。如果用户输入的数字保留到小数点后3位或更多,则会将转换后的结果复制到剪贴板中保留到小数点后4位。当我运行代码时,我得到一个ValueError,但我不知道为什么。这是我得到的错误 line 88, in con if float_number >= ("%.3f" % float_number): ValueErr
line 88, in con
if float_number >= ("%.3f" % float_number):
ValueError: incomplete format
下面是给我带来麻烦的代码部分(我在注释中解释了一些东西,这些东西对你们这些家伙/女孩来说可能是缺失的)
您的错误表示字符串模板中有错误,您缺少一个
%
:
if float_number >= (".3f" % float_number):
应该是
if float_number >= ("%.3f" % float_number):
hover,现在您正在尝试将浮点值与字符串进行比较:
if float_number >= ("%.3f" % float_number):
这将抛出一个类型错误
:
>>> 0.123 >= '0.123'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: float() >= str()
您的错误表示字符串模板中有错误,您缺少一个%
:
if float_number >= (".3f" % float_number):
应该是
if float_number >= ("%.3f" % float_number):
hover,现在您正在尝试将浮点值与字符串进行比较:
if float_number >= ("%.3f" % float_number):
这将抛出一个类型错误
:
>>> 0.123 >= '0.123'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: float() >= str()
请务必向我们提供错误的完整回溯,不要让我们猜测错误发生的位置。您无需调用float(number)
两次。只需将float\u number=float(number)
移动到中,然后尝试/除了..:
并删除其他:
套件。我可以看到您的代码将抛出类型错误
,而不是值错误
。这就是你看到的吗?我只是将错误添加到问题中。你的错误与你的源代码不匹配,但即使你修复了它,它也会给出一个TypeError。请给我们完整的错误回溯,不要让我们猜测错误发生的位置。你不需要调用float(number)
两次。只需将float\u number=float(number)
移动到中,然后尝试/除了..:
并删除其他:
套件。我可以看到您的代码将抛出类型错误
,而不是值错误
。这就是你看到的吗?我只是把它给我的错误添加到了问题中。你的错误与你的源代码不匹配,但即使你修复了它,它也会给你一个TypeError。你需要更仔细地考虑你的条件;例如,您可以比较四舍五入(float_number,3)>=0.01
。@innosis.Py:取用户输入的原始字符串,按小数点拆分,然后进行测量,怎么样len(number.split('.')[1].strip())
。Python有优秀的文档和优秀的交互式解释器。为什么不试试解释器(,)中的各个组件。将len(number.split(')[1].strip())
的结果存储在变量(decimals\u count
可能)中,然后将该数字(一个整数)与预期的小数位数进行比较if decimals_count@innosis.Py:使用类似于try:decimals_count=len(number.split('.')[1].strip())
,索引器除外:decimals_count=0
;异常处理是处理这种情况的最简单方法;例如,您可以比较四舍五入(float_number,3)>=0.01
。@innosis.Py:取用户输入的原始字符串,按小数点拆分,然后进行测量,怎么样len(number.split('.')[1].strip())
。Python有优秀的文档和优秀的交互式解释器。为什么不试试解释器(,)中的各个组件。将len(number.split(')[1].strip())
的结果存储在变量(decimals\u count
可能)中,然后将该数字(一个整数)与预期的小数位数进行比较if decimals_count@innosis.Py:使用类似于try:decimals_count=len(number.split('.')[1].strip())
,索引器除外:decimals_count=0
;异常处理是处理这种情况的最简单方法。