Точность в C ++ - PullRequest
       14

Точность в C ++

0 голосов
/ 18 июля 2011

У меня есть этот запрос в моем коде C ++:

 query << "UPDATE currency SET value= " << currencyValue

currencyValue определяется как "const double& currencyValue", и когда я смотрю, значение равно

0.00045545105422339915

Но если я проверю значение запроса, то получу что-то вроде

UPDATE currency SET value = 0.000455451

так что десятичные дроби пропадают ...

Есть идеи, почему?

Ответы [ 2 ]

5 голосов
/ 18 июля 2011

Вы можете попробовать вызвать setprecision (10) (или любое значение, которое вы действительно хотите) в своем потоке перед выводом на него двойного значения.

Вы можетесделать это так:

#include <iomanip>
query << "UPDATE currency SET value= " << std::setprecision(10) << currencyValue;
0 голосов
/ 18 июля 2011

currencyValue является двойным, «UPDATE currency SET set =» - строка. Точность теряется при преобразовании из двойной в строку. Вы можете использовать что-то вроде «std :: setprecision (20)» или использовать другую функцию для преобразования double в строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...