>> 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.