【问题标题】:Getting a floating point number input to print out as integer and a decimal获取浮点数输入以打印为整数和小数
【发布时间】:2022-10-22 18:57:31
【问题描述】:

我试图让用户输入一个浮点数。然后我的程序应该将其打印为整数和小数。我正在寻找的是:

如果用户输入:1.34 ... 那么整数应该打印:1,小数应该打印:0.34

这就是我正在做的事情:

number = float(input('Number: '))
print('integer: ', int(number))
print('decimal: ', number / 1))

我不知道如何四舍五入得到 0.34。如果我应该在第 3 行再次将数字转换为浮点数,或者将原始数字除以 100 或其他内容。

【问题讨论】:

  • 你想在消极方面有什么行为?对于-6.1,您会做出什么回应?
  • 0.61 可能是我要寻找的。不知道数学是否正确,因为现在我只是用正整数进行测试,而不是负数。它应该四舍五入。对不起,如果这让你感到困惑,我自己已经很困惑了。我不知道是否与地板功能有关。

标签: python python-3.x


【解决方案1】:

只需从原始浮点数中取整数(假设数字为正数)

number = float(input('Number: '))
print('integer: ', int(number))
print('decimal: ', number - int(number)))

是的,有时结果可能有点不准确。这是使用浮点数here's an explanation 的结果。正如 Eric 指出的那样,四舍五入到几个小数位是一个解决方案,例如round(number - int(number), 10)

【讨论】:

  • 答案是 0.34100000000001。不是我要找的。 :(
  • 这很正常。这称为浮点舍入。如果您不希望这样,您可以尝试round(number-int(number), 10) 来消除额外的精度。
  • 是的,谢谢你这个作品。在看了你的第一条评论number = float(input("number: "))integer = int(number)decimal = number - integerprint(f"Integer part: {integer}")print(f"Decimal part: {decimal}")对不起我不知道如何格式化代码后,我也尝试过这种方式
【解决方案2】:

除法显然不是完美的解决方案,您可以使用函数round,如下所示:

number = str(round(float(input('Number: ')), 2))
integer, dec = number.split('.')

print(f'integer: {integer}, decimal: 0.{dec}')

输出:

Number: 1.2658
integer: 1, decimal: 0.27

【讨论】:

    【解决方案3】:

    考虑以下:

    i,d=map(int, number.split('.') if '.' in number else [number, '0'])
    

    覆盖整数而不强制用户输入 1.0

    【讨论】:

      【解决方案4】:

      这是另一种获得小数点后两位的方法

       number = float(input('Number: '))
          print('integer: ', int(number))
          dec= number - int(number)
          print('decimal: ', round(dec,2))
          
          Number: 1.34
          integer:  1
          decimal:  0.34
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-29
        • 2018-06-26
        相关资源
        最近更新 更多