Saya memiliki masalah dengan skrip penghitungan uang saya. Ini berfungsi dengan baik tetapi saya perlu memformat output dalam dua cara tetapi saya tidak dapat menggunakan fungsi string apa pun termasuk format tetapi saya kira menggunakan fungsi matematika lib floor ceil.

import math

coins1 = int(input("Quantity of 1 cent coins ? ")) * 0.01

coins2 = int(input("Quantity of 2 cent coins ? ")) * 0.02

coins3 = int(input("Quantity of 5 cent coins ? ")) * 0.05

coins4 = int(input("Quantity of 10 cent coins ? ")) * 0.10

coins5 = int(input("Quantity of 20 cent coins ? ")) * 0.20

coins6 = int(input("Quantity of 50 cent coins ? ")) * 0.50

coins7 = int(input("Quantity of 1 euro coins ? ")) * 1

coins8 = int(input("Quantity of 2 euro coins ? ")) * 2

bills1 = int(input("Quantity of 5 euro bills ? ")) * 5

bills2 = int(input("Quantity of 10 euro bills ? ")) * 10

bills3 = int(input("Quantity of 20 euro bills ? ")) * 20

bills4 = int(input("Quantity of 50 euro bills ? ")) * 50



total = coins1 + coins2 + coins3 + coins4 + coins5 + coins6 + coins7 + coins8 + coins1 + bills2 + bills3 + bills4


print("You've got", total, "euro and",)

Output saya saat ini adalah:

You've got 32792039464.8 euro and

Cita-cita saya adalah:

You've got 32792039464 euro and 80 cents.
$32.792.39.464,80
2
Lukas 2 Juni 2019, 01:45

2 jawaban

Jawaban Terbaik

Pertama-tama Anda harus mengalikan total%1 dengan 100 untuk mendapatkan nilai sen di dalam sumur, sen.

cents = math.ceil(total%1 * 100) ## for 32792039464.8 cents will be 0.8. times 100 is 80.
total = math.floor(total - cents/100) ## round the number down

print("You've got", total, "euro and ", cents, " cents.")

Anda juga dapat menggunakan ini:

cents = round(total%1 * 100) ## for 32792039464.8 cents will be 0.8. times 100 is 80 cents.
total = round(total - cents/100) ## round the total down. 32792039464.8 to 32792039464

print("You've got", total, "euro and ", cents, " cents")
1
Juci Reif 1 Juni 2019, 23:23

Cukup gunakan int() untuk mendapatkan bagian bilangan bulat dan modulo % untuk mendapatkan bagian desimal:

print("You've got", int(total), "euro and", total % 1, "cents.")

Anda akan melihat masalah klasik angka floating point segera :)

1
ruohola 1 Juni 2019, 22:51