Точность двойного чтения с помощью обернутого модуля C ++ и печати ',' вместо '.' - PullRequest
0 голосов
/ 24 апреля 2020

Я работаю над элементарной ОС (так что Ubuntu 18.04) и g cc 7.5.0.

Мой решатель находится в Python3 с оболочкой для модуля C ++ (через pybind11). Первое любопытство, которое я обнаружил, заключается в том, что все числа с плавающей точкой и числа, напечатанные в .txt, пишутся с помощью ',' вместо '.'; это не большая проблема (я решил ее с помощью процедуры mini python, чтобы «поменять» их), но я нашел это странным и раздражающим ...

Самая большая проблема возникает из-за ссылки, которую я сделал с внешняя библиотека: когда эта библиотека (скомпилированная в C ++ на том же компьютере) считывает данные из. xml, я получаю их округленными до первых 3 цифр. Это становится большой проблемой, если вы думаете, что 0,000055 читается как 0, и у вас есть его как знаменатель ...

Я не знаю, в чем может быть проблема (или если эти два связаны), но Я не нашел подобных topi c в сети.

Кроме того, те же исходные коды отлично работают на машине с Fedora (и g cc 7.3.2); может быть что-то связано с компилятором? Я нашел такой же обмен ',' и '.' на установке Ubuntu 18.04 на виртуальной машине, компилируя с предопределенным g cc.

Любое предложение приветствуется!

РЕДАКТИРОВАТЬ (Извините, это был мой первый вопрос здесь)

Что касается печати поплавков, я печатаю файлы типа «file_iter_005000_time_1,11172318e + 00.txt» с поплавками в нем «5,045 ...». Я пишу их в текстовые файлы, используя ofstream, с именем файла, записанным в виде:

sprintf(fname + strlen(fname), "/file_iter_%06i_time_%.8e.txt", m_iter, physTime)

Используемая мной внешняя библиотека: https://github.com/mutationpp/Mutationpp и, проходя через sr c файлы, он использует Xmllite для чтения файлов xml.

...