2016-09-21 1 views
1

Я столкнулся с очень странной ситуацией. Настолько странно, что я даже не знаю, как задать свой вопрос!Странный символ в printf при использовании показаний экспонента

Я работаю с кодом, который генерирует выходной файл в простом формате. Детали этого формата не очень важны. Важно то, что где-то в файле есть несколько (десятки тысяч) строк, каждая из которых содержит три пары чисел, разделенных пробелом и символом новой строки, \n, в конце.

Каждое число записывается с использованием показателя степени нотации, просто как:

fprintf(outFile,"%e %e %e\n",x,y,0.0); 

где x и y двойники.

Вот странная часть. В одном из файлов, с более чем 100K + линий или около того, есть строка печатается в этом

7.812500e-02 -1.875000g+00 0.000000e+00 

Что на земле г + 00 в -1.875000g+00?!

Я использовал этот код более 5 лет, он создал более десятков тысяч файлов, и это первый раз, когда я когда-либо видел такую ​​вещь. Я немного искал онлайн-поиск, но ничего не нашел?

Кто-то, пожалуйста, сохраните мое здравомыслие!

+5

Космические лучи, никто? Ошибка четности - не исправлена? 2-бит в характере получил tweaked между 'e' и' g'. –

+2

'g' является жадным показателем. Это жадно, потому что он съел все цифры, оставив только ноль :-) –

+1

Предложите резервное копирование жесткого диска и закажите замену –

ответ

1

Это ошибка, код не показывает какой-либо возможный случай для отображения научной нотации с помощью «g», возможно, ошибка вводится вашими данными, поэтому я предлагаю изучить этот конкретный файл, проверить все символы NP , и т. д. Затем сообщите об ошибке в библиотеке.

https://sourceware.org/bugzilla

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