2016-08-04 2 views
-3

It is not about printing. Речь идет о сохранении значения.Как сохранить точность двойной переменной в C++?

int x = 1234;
double y = 0.3456;

double z = x + y;

В настоящее время z содержит 1234.35. Я хочу z содержать 1234.3456

Что можно сделать для этого?

+2

'z' содержит точное значение. Вы не печатаете его с достаточной точностью. – EJP

+0

, если у вас все еще есть проблемы, показать полную программу, которая производит нежелательный вывод –

+0

Как вы просматриваете значение в 'z'? – doctorlove

ответ

5

Он содержит 1234.3456. Проверьте себя:

#include <cstdio> 

int main() 
{ 
    int x = 1234; 
    double y = 0.3456; 
    double z = x + y; 

    printf("%.8f\n", z); 
} 

Output:

1234.34560000 
+0

Другими словами, да, речь идет о печати (или выходе форматирования). –

2

Двойная точность содержит немного меньше, чем 16 десятичных цифр. Печатное значение z менее точное, чем сохраненное. Если вы хотите более 16 цифр, вы должны рассмотреть конкретные библиотеки, такие как mpfr

+0

15.9 десятичных цифр. – EJP

+0

Зависит от того, нужен ли вам десятичный цикл с округлением до десятичной до десятичной. http://www.exploringbinary.com/number-of-digits-required-for-round-trip-conversions/ –

+0

@EJP спасибо, 15,9 - 53/log_2 (10). – Franck