Возьмём следующий пример:
#include <stdio.h> int main(int argc, char **argv) { int subtotal; int tax; int grandtotal; double taxrate; taxrate = 0.175; subtotal = 200; tax = subtotal * taxrate; grandtotal = subtotal + tax; printf( "The tax on %d is %d, so the grand total is %d.\n", subtotal, tax, grandtotal ); return 0; }
Цель программы – подсчитать общую стоимость какого-то товара, где subtotal
– его цена без налога, taxrate
– % налога (taxrate = 0.175
будет %17.5 налога), grandtotal
– будет содержать полную цену, а tax
– сумму налога.
Затем – мы получим сумму налога:
... tax = subtotal * taxrate; ...
И с её помощью – полную цену товара:
... grandtotal = subtotal + tax; ...
И в конце – используем уже знакомую функцию printf()
для отображения цены:
... printf( "The tax on %d is %d, so the grand total is %d.\n", subtotal, tax, grandtotal ); ...
Проверяем:
[simterm]
$ gcc int_double.c -o int_double $ ./int_double The tax on 200 is 35, so the grand total is 235.
[/simterm]
В этом примере – мы используем целочисленный тип для переменных subtotal
и tax
, что в результате возвращает нам целые числа:
The tax on 200 is 35, so the grand total is 235.
Если же требуется точность до долей значения – используйте тип данных double
, например:
#include <stdio.h> int main(int argc, char **argv) { double subtotal; double tax; double grandtotal; double taxrate; taxrate = 0.175; subtotal = 200; tax = subtotal * taxrate; grandtotal = subtotal + tax; printf( "The tax on %.2f is %.2f, so the grand total is %.2f.\n", subtotal, tax, grandtotal ); return 0; }
Используя тип double
для переменных и спецификатор %f
(floating) – мы получим точное значение:
[simterm]
$ gcc int_double2.c -o int_double2 $ ./int_double2 The tax on 200.00 is 35.00, so the grand total is 235.00.
[/simterm]
Кроме того – в спецификаторе можно указать кол-во символов, которые требуется вывести после дроби – %.2f
.
Изменим его:
... printf( "The tax on %.4f is %.4f, so the grand total is %.4f.\n", subtotal, tax, grandtotal ); ...
Результатом будет:
[simterm]
$ ./int_double2 The tax on 200.0000 is 35.0000, so the grand total is 235.0000.
[/simterm]
Продолжение – часть 8 – константы.