Я использую C++ 11. У меня есть координаты реального мира, такие как 38.0098662, 23.7805398
в текстовом файле, что означает 2 double
переменных. Я разбираю этот файл с C++ и конвертирую strings
в double
с помощью метода stod()
. Когда я попытался напечатать значения с count.precision(9);
, значения, казалось, были такими же, как в текстовом файле.Преобразование строки в двойную, а затем двойную в строку без потери точности
Затем, я хочу преобразовать эти значения double
обратно в формат string
. Для этого я использую метод to_string()
. Однако это немного меняет стоимость. Например:
38.0098662, 23.7805398 became
38.009866, 23.780540
// in fact, every number is xx.yyyyyy
Я не понимаю, почему это так сложно сделать с C++ 11. Почему я теряю точность без причины? Как я могу сделать это правильно? Каждый вопрос, на который я смотрел, указывал на метод to_string()
, который я использую.
_ «Я сделал то же самое в python, и я не видел этого поведения». _ Не уверен, что актуальность Python здесь. Это совсем другой язык. –