如何让Python使用raw_input值作为固定点数?

时间:2012-08-31 18:35:42

标签: python python-2.7

我正在制作一个单位转换器来练习。目前,我已经定义了一个函数来确定要进行的转换类型(距离,时间,质量等)。

然后它会为该类型调用正确的转换器,询问您要转换的内容,转换的内容以及转换的价值。

def mass_converter():
    convert_from = raw_input('What unit are you converting from? ')
    convert_to = raw_input('What unit are you converting to? ')
    value = raw_input('How many of those do you have? ')

    if convert_from == "pounds" and convert_to == "kilograms":
        answer = float(value) * 0.453592
        print "That many pounds is %d kilograms." % answer
    elif convert_from == "kilograms" and convert_to == "pounds":
        answer = float(value) * 2.20462
        print "That many kilograms is %d pounds." % answer
    else:
        print "You have not selected a valid unit; please try again."
        mass_converter()

目前,如果我将10磅转换成公斤,它告诉我答案是4公斤。它似乎正在削减我的小数。显然int(value)会做同样的事情。我可以使用什么来保持用户输入的确切值?

2 个答案:

答案 0 :(得分:7)

这里的问题是你在字符串格式中使用%d格式修饰符,它将你的答案转换为整数。请改用%f(甚至%s)。

答案 1 :(得分:2)

您可以使用%f代替%d。 %d将数字格式化为浮点数,而不是整数。或者你可以使用

  print "That many kilograms is {} pounds.".format(answer)