1 00:00:00,000 --> 00:00:00,330 2 00:00:00,330 --> 00:00:02,700 >> SPEAKER 1: Supponiamo che io piacerebbe scrivere un programma che stampa un float, 3 00:00:02,700 --> 00:00:05,700 in particolare il risultato di dividendo 1 per 10. 4 00:00:05,700 --> 00:00:08,830 Beh, il mio primo istinto sarebbe quello di scrivere questo programma come segue. 5 00:00:08,830 --> 00:00:18,160 Float f è uguale a 1 diviso 10, e poi stampare f cento .1 f, quindi 6 00:00:18,160 --> 00:00:22,270 a significare che mi piacerebbe stampare un galleggiante di un decimale, 7 00:00:22,270 --> 00:00:26,490 backslash n comma f. 8 00:00:26,490 --> 00:00:28,270 Vediamo ora compilare questo programma. 9 00:00:28,270 --> 00:00:32,980 Fai float 0 dot barra flottante 0. 10 00:00:32,980 --> 00:00:34,140 >> Beh, non è proprio così. 11 00:00:34,140 --> 00:00:40,210 Sono abbastanza sicuro che 1 diviso per 10, o 1/10 non è 0.0, ma 0.1, eppure 12 00:00:40,210 --> 00:00:42,820 qui sto vedendo sullo schermo 0.0. 13 00:00:42,820 --> 00:00:43,860 Cosa sta succedendo? 14 00:00:43,860 --> 00:00:47,790 Beh, si scopre che in C, se si divide un int da un int, 15 00:00:47,790 --> 00:00:49,090 si ritorna un int. 16 00:00:49,090 --> 00:00:54,810 E così, anche se 1 diviso 10 è infatti 0.10, 0.1 non può andare bene in un int, 17 00:00:54,810 --> 00:00:58,930 e così che cosa c fa è tronca, o getta via tutto dopo l' 18 00:00:58,930 --> 00:01:01,770 decimale, lasciando così noi con solo 0. 19 00:01:01,770 --> 00:01:04,989 >> Ma poi, naturalmente, con la stampa f, abbiamo precisiamo che vorremmo stampare f per 20 00:01:04,989 --> 00:01:09,260 un decimale, e in modo che 0 viene visualizzato come 0.0. 21 00:01:09,260 --> 00:01:11,540 Ebbene, chiaramente questo problema che ha bisogno di una soluzione. 22 00:01:11,540 --> 00:01:14,025