2015-10-26 4 views
-1
def poundsToMetric(pounds): 
    kilograms = pounds/2.2 
    grams = kilograms * 1000 
    return int(kilograms), grams % 1000 

pounds = float(input("How many Pounds? ")) 
kg, g = poundsToMetric(pounds) 
print('The amount of pounds you entered is {}. '\ 
     'This is {} kilograms and {} grams.'.format(pounds, kg, g)) 

эта программа работает, но мне интересно, как я могу получить килограммы быть только даже с десятичными точками так, вместо 65 фунтов быть как 545,4544545454 граммов, мне нужно, чтобы это было 545 граммовфунтов в программе Метрика питона

+0

Возможный дубликат [Является ли математика с плавающей запятой?] (Http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – Hypaethral

+0

Возможный дубликат [Как вы можете округлить число в Python?] (http://stackoverflow.com/questions/2356501/how-do-you-round-up-a-number-in-python) –

ответ

0

Есть два способа:

  1. Используйте круглые() встроенная функция

    def poundsToMetric(pounds): 
        kilograms = pounds/2.2 
        grams = kilograms * 1000 
        return int(kilograms), grams % 1000 
    
    pounds = float(input("How many Pounds? ")) 
    kg, g = poundsToMetric(pounds) 
    print('The amount of pounds you entered is {}. This is {} kilograms and {} grams.'.format(pounds, kg, round(g))) 
    
  2. Использование Int() литье, чтобы получить целую часть значения:

    def poundsToMetric(pounds): 
        kilograms = pounds/2.2 
        grams = kilograms * 1000 
        return int(kilograms), grams % 1000 
    
    pounds = float(input("How many Pounds? ")) 
    kg, g = poundsToMetric(pounds) 
    print('The amount of pounds you entered is {}. This is {} kilograms and {} grams.'.format(pounds, kg, int(g))) 
    

См выход для каждого из этих способов, соответственно, ниже:

➜ python help.py 
How many Pounds? 65 
The amount of pounds you entered is 65.0. This is 29 kilograms and 545.0 grams. 

➜ python help.py 
How many Pounds? 65 
The amount of pounds you entered is 65.0. This is 29 kilograms and 545 grams. 
0

Если вы добавить строку

print type(grams%1000) 

Вы получите результат

<type 'float'> 

Таким образом, это явно возвращает поплавок. Передайте его int, чтобы получить желаемый результат.

Вместо того, чтобы сделать это:

return int(kilograms), grams % 1000 

ли это:

return int(kilograms), int(grams % 1000) 

Теперь выход для вашей программы:

The amount of pounds you entered is 65. This is 29 kilograms and 545 grams. 

именно то, что вы хотели.

Смежные вопросы