teddymvs 发表于 2024-3-24 22:27

Python中关于str转浮点数的问题

      初学者求助,在一个判断输入数字为正负0的作业中,遇到了输入的内容为字符串类型,不能直接判断大小。
      随后我用float转化了一下就可以了。能够判断出是正负0了。
num = input("请输入一个数字!:")
num = float(num)

if num > 0:
    print("这是一个正数")
elif num < 0:
    print("这是一个负数")
else:
    print("这是零")
      但是float并没有达到我想要的效果,我想在输出中显示输入的内容。
例如:1. 输入 '6.0' 输出 '6.0 是正数'
         2. 输入 '6.000' 输出 '6.000 是正数'
      如何解决这个精度问题呢,而且是根据输入变化的这种。
      感谢!

Arcticlyc 发表于 2024-3-24 23:22

傻孩子,你 float 后用一个新变量报存,输出的时候用输入的 str 不就行啦

HackYike 发表于 2024-3-24 23:34

你这都不确定输入的是什么东西,怎么就敢直接强行转换了?这里要加判断或try一下,要保持原样就直接格式化输出
num = input("请输入一个数字:")
try:
    n = float(num)
    if n > 0:
      print(f"{num}是正数")
    elif n == 0:
      print(f"{num}是0")
    else:
      print(f"{num}是负数")
except:
    print("输入错误")

怀中猫 发表于 2024-3-24 23:34

num = input("请输入一个数字!:")

# 直接使用字符串进行比较,而不是转换为浮点数
if num > '0':
    print(f"{num} 是正数")
elif num < '0':
    print(f"{num} 是负数")
else:
    print("这是零")

YuYu798 发表于 2024-3-24 23:41

用两个变量接收
while True:
    num_in = input("请输入一个数字!:")
    num = float(num_in)
    if num > 0:
      print(f"{num_in} 这是一个正数")
    elif num < 0:
      print(f"{num_in} 这是一个负数")
    else:
      print("这是零")

teddymvs 发表于 2024-3-24 23:56

HackYike 发表于 2024-3-24 23:34
你这都不确定输入的是什么东西,怎么就敢直接强行转换了?这里要加判断或try一下,要保持原样就直接格式化 ...

谢谢!目前是学校非计算机专业,刚刚学到这里。

teddymvs 发表于 2024-3-24 23:57

怀中猫 发表于 2024-3-24 23:34
num = input("请输入一个数字!:")

# 直接使用字符串进行比较,而不是转换为 ...

学到了,字符串也能比较大小?

teddymvs 发表于 2024-3-24 23:59

YuYu798 发表于 2024-3-24 23:41
用两个变量接收
while True:
    num_in = input("请输入一个数字!:")


学到了,感谢!

whxn 发表于 2024-3-25 01:02

你可以使用 python 里面的 f-string来达到你想要的效果

爱飞的猫 发表于 2024-3-25 07:44

本帖最后由 爱飞的猫 于 2024-3-25 07:46 编辑

teddymvs 发表于 2024-3-24 23:57
学到了,字符串也能比较大小?
按字符比较的,不符合直觉。

```
>>> '1' > '2'
False
>>> '2' > '10'
True
>>> '10' > '20'
False
>>> '100' > '20'
False
>>> '300' > '20'
True
```
页: [1] 2
查看完整版本: Python中关于str转浮点数的问题