Jak pythonistas wydrukować numer co słowy, jak równowartość wspólnego kodu Lisp:wysławianiu formatować liczby w Pythonie
[3]> (format t "~r" 1e25)
nine septillion, nine hundred and ninety-nine sextillion, nine hundred and ninety-nine quintillion, seven hundred and seventy-eight quadrillion, one hundred and ninety-six trillion, three hundred and eight billion, three hundred and sixty-one million, two hundred and sixteen thousand
Excellent - (? C) I rzeczywiście zauważyłem, że, ale to błąd, w jaki sposób Pythona obsługuje wykładniczy wyrażenie: 'int (1e25)' tworzy '10000000000000000905969664L' i' 1 * 10 ** 25' produkuje '10000000000000000000000000L'. Dziwne? –
Nic dziwnego. '1e25' to" ustaw wartość zmiennoprzecinkową najbliższą 10^25 ", a' 1 * 10 ** 25' mówi "pomnóż 1 przez wynik pomnożenia 10 przez siebie 25 razy". Arytmetyka zmiennoprzecinkowa o stałej szerokości (na komputerze) nie jest matematycznie dokładna, natomiast liczby całkowite w ostatnich wersjach Pythona są arbitralną precyzją. – Ken
1e25 nie jest "wyrażeniem wykładniczym", jest literałem zmiennoprzecinkowym. A liczba zmiennoprzecinkowa w pythonie nie może dokładnie wynosić 10 ** 25 (i nie powinno to być tak dużym zaskoczeniem, biorąc pod uwagę, że 2 ** 84> 10 ** 25> 2 ** 83). – 6502