David J. MALAN: Jak zapewne wiesz, Temperatury mierzone są za pomocą różne skale w różnych części świata. Na przykład, to 212 stopni Celsjusza 100 stopni, a 32 stopni Celsjusza Fahrenheit jest 0 stopni Celsjusza. Czy nie byłoby miło, gdybyśmy mieli komputer program, który pozwolił nam przekonwertować z, powiedzmy, Fahrenheita na Celsjusza? Cóż, możemy napisać ten program. Niech najpierw zacząć zawierać cs50.h, tak, że możemy korzystać z funkcji o nazwie dostać pływaka, który, jak get int, dostaje liczbę od użytkownika, przy czym tym razem liczby zmiennoprzecinkowe - jeden z przecinkiem. Załóżmy także standardowy io.h tak, że mamy dostęp do funkcje, takie jak drukarki f. I niech też zadeklarować główną w znany sposób. Niech następne poprosi użytkownika o temperatury w stopniach Fahrenheita. Niech teraz rzeczywiście się, że temperatura od użytkownika, najpierw deklarując zmienną f typu float. Pływak, ponownie, co oznacza, że ​​zmienna przechowuje wartość zmiennoprzecinkową, jeden z przecinkiem. Miejmy przypisać mu powrót wartość get pływaka. A następnie zróbmy trochę arytmetyki na nim, najpierw deklarując innego pływaka zwany C Celsjusza i przechowywać w C wynikiem jakiegoś wspólnego arytmetyki. 5,0 podzielone przez 9,0 razy F minus 32,0. Załóżmy teraz wydrukować wynik tego obliczenia. procent f - co oznacza symbol zastępczy zmiennoprzecinkową - przecinek C do wydrukowania Temperatura w stopniach Celsjusza. Ratujmy moja ostateczna. Skompilować z F do C. Uruchom program z dot slash F do C. I spróbujmy te wspólne temperatury. 212 stopni w skali Fahrenheita wynosi 100 stopni Celsjusza. 32 stopni w skali Fahrenheita jest W 0 stopni Celsjusza. Teraz pozwala udoskonalić ten program trochę nieco przez nie drukuje dość tyle 0-tych Po tym miejscu dziesiętnym. Aby to zrobić, będę wrócić do linii 11. I zamiast po prostu podać procent f, Zamierzam zamiast określić, powiedzmy, 0,1 m, informując, że tylko druk f I chcesz wydrukować wartość zmiennoprzecinkową do jednej wartości po przecinku. Załóżmy ponownie zapisać mój program. Przekompilować go z make F do C. Następnie ponownie uruchomić go dot slash F do C i niech ponownie z, powiedzmy, 212, co daje mi 100,0. Teraz warto zauważyć, że zrobiłem coś bardzo świadomie w linii 9. Zauważ, jak napisałem 5 wynosi 5,0, 9 jako 9,0, a nawet 32 ​​jak 32,0. Cóż, pierwsze dwie z tych wartości były bardzo celowo, aby być Wartości zmiennoprzecinkowe, nie tylko dlatego, spójności z resztą z mojego programu - które wyraźnie dotyczą pływające Wartości punktowe - ale dlatego, że okazuje się, że C, Jeśli podzielić int innego int, Otrzymaną odpowiedź masz zamiar dostać się jest Sam int, nawet jeśli oznacza to konieczności wyrzucić wszystko po przecinku. Innymi słowy, jeśli zmienię to 5,0 do 5 lub to 9,0 do 9, a następnie ponownie zapisać mój program, ponownie skompilować z make F do C, , a następnie ponownie uruchomić go z kropka slash F do C i wpisz wejściem jak 212, zauważyć, że odpowiedź zamierzam się tym razem jest całkiem źle. 0.0 nie jest prawidłowy poziom w Celsjusza w 212 ° C. Cóż, to, co się dzieje? Cóż, w linii 9, ponieważ 5 jest teraz całkowitego, ponieważ Fig. 9 jest teraz całkowita, wynikiem matematycznego należy 0,5555 i tak dalej. Ale dlatego, że wynik, zgodnie z Zasady C, w musi być int, że 0,5555 zostanie wyrzucony, pozostawiając nam tylko 0. Więc w końcu, ja skończyć pomnożenie zupełnie przypadkowo 0 razy f minus 32.0, który jest niezależnie zawsze da mi 0. Więc pamiętać, w dowolnym czasie za pomocą wartości zmiennoprzecinkowe w pobliżu ints, może nie koniecznie uzyskać odpowiedź, więc można się spodziewać. A więc zadbać, aby korzystać, tak jak w Wartości pierwszy przypadek, zmiennoprzecinkowe całej, aby uniknąć takich problemów.