Возьмём следующий пример:
#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 – константы.

2 581 views