在下面的代码中,我总是将结果作为最接近的整数。但是我想将除法结果作为浮点数,即12/5 = 1.4,而不是我在程序中得到的2。我正在使用python2.7
"""Given division of two numbers, the result will print out """
try:
divident = int(raw_input("Enter the divident: "))
divisor = int(raw_input("Enter the divisor: "))
print (" %d devided by %d is %f: " % ( divident, divisor, divident / divisor))
except(ValueError, ZeroDivisionError):
print ("Something went wrong!")
答案 0 :(得分:1)
基本解释是,在几乎所有编程语言中,将2个数字类型T的变量相除会返回该类型T的值。 整数除法由处理器作为欧氏除法执行,返回商(作为整数)。
打印格式%f
不会为您执行变量类型转换。
我强烈建议您阅读建议的重复问题,以进一步了解python行为。
示例:
12 = (2 * 5) + 2 => 12 / 5 = 2 12 % 5 = 2
12 = (1 * 7) + 5 => 12 / 7 = 1 12 % 7 = 5
在python中:
Python 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:30:26) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 12/5
2
>>> 12%5
2
>>> 12/7
1
>>> 12%7
5
如果要获取浮点数,请按照https://stackoverflow.com/users/8569905/banghua-zhao的建议进行操作。
进行浮点转换,然后执行除法。然后,处理器将使用浮点除法并返回浮点数。 如下面的注释中所指出的,如果2个操作数具有不同的类型,则运算符计算将使用最多的 restrictive 类型:float将优先于整数。在下面的示例中,一个浮标就足够了。
>>> float(12)/float(5)
2.4
请注意,%运算符仍会执行欧几里得除法并为您提供浮点运算结果
>>> float(12)%float(5)
2.0
>>> float(12)%float(7)
5.0
答案 1 :(得分:0)
您divident
和divisor
都是int类型,因为您使用int()
方法将raw_input()
的值转换为int类型。
因此,divident / divisor
也是一个int类型。在除法之前,您需要将int转换为float(例如:float()
)。
"""Given division of two numbers, the result will print out """
try:
divident = int(raw_input("Enter the divident: "))
divisor = int(raw_input("Enter the divisor: "))
print (" %d devided by %d is %f: " % ( divident, divisor, float(divident) / float(divisor)))
except(ValueError, ZeroDivisionError):
print ("Something went wrong!")
输出:
Enter the divident: 12
Enter the divisor: 5
12 devided by 5 is 2.400000:
请注意,如果您输入的内容不是整数,请考虑在开始时将它们转换为浮点型:
divident = float(raw_input("Enter the divident: "))
divisor = float(raw_input("Enter the divisor: "))
答案 2 :(得分:0)
由于输入类型确定输出类型,因此必须将输入类型声明为float而不是int。 您应该尝试:
a=float(input('your prompt string'))
b=float(input('your 2nd prompt'))
print(a/b)