2012-06-20 2 views
2
double x = 9.29; 
double y = 8.69; 

double diff = floor((x - y)*100+0.5)/100.0; 

это дает мне разница, как 0,6, но мне нужно как 0,60 (два знака после запятой) Может кто-то пожалуйста, помогите мне с этим?округление двойные две десятичные точки

+3

[станд :: setprecision] (http://en.cppreference.com/w/cpp/io/manip/setprecision) – chris

+0

Вы печатаете это позже? Это будет тогда, когда 0,6 и 0,60 будут иметь значение. И в этом случае *, как вы напечатаете, будет иметь значение, какой ответ может быть лучше. – crashmstr

+0

Я хочу сохранить его в переменной diff. – CamAd

ответ

7

Значение double равно 0,6, так как 0,6 и 0,60 (математически) то же самое. Вам нужно установить точность, когда вы используете . Значение не при его вычислении.

Это может быть сделано с помощью

cout << setprecision (2) << diff << endl; 

или

printf("%.2f\n", diff); 
+0

Поскольку diff - это double this ----> 'printf ("%. 2f \ n ", diff);' вызывает предупреждение. Вы должны написать либо '% .2e' /'% .2E', либо '% .2lf' –

2

Если вы используете C++, вы должны сделать что-то вроде этого:

cout.precision(2); 
cout << fixed << diff << "\n"; 

Если вы ERE с помощью C попробуйте это:

printf("%.2e\n", diff); 

Функция precision определяет максимальное количество цифр, которое должно быть записано на операции вставки, для выражения значений с плавающей запятой. Таким образом, если выполнить этот код вы получите

0.60 

и если вы установите presision до 3 вы получите

0.600 
Смежные вопросы