28.06.2010, 10:20 | #1 |
Сам.AX
|
Ошибка в функции str2num при обработке данных в экспоненциальном формате (плавающей запятой, научной нотацией).
Добрый день.
DAX 4.0 - Kernel version: 4.0.2503.516, Application version: 4.0.2501.347 Столкнулся с этой ошибкой при заливке остатков из 1С из файла excel, при обработке чисел с плавающей запятой малой величины, функция возвращает некорректный результат. После анализа стало видно что ошибка возникает, когда в обрабатываемых данных из excel не стоит разделитель. Вот демонстрация ошибки: X++: static void errorStr2num(Args _args) { Qty qty1, qty2, qty3; ; qty1 = str2num('1e-3'); qty2 = str2num('5.6e-2'); qty3 = str2num('1.e-3'); info(strFmt('%1 %2', num2str(qty1,0,3,2,0), 'Ошибка ожидаем 0,001')); info(strFmt('%1 %2', num2str(qty2,0,3,2,0), 'Без ошибки')); info(strFmt('%1 %2', num2str(qty3,0,3,2,0), 'Без ошибки')); } Причём в 3-ке MBS Axapta 3.0 Build #1951.7609/514-320 SP4/OP032-196 всё работало корректно. Как вариант обхода ошибки можно использовать функцию any2real, или в обрабатываемом файле заменить разделитель с запятой на точку, это приводит к тому что данные из excel (пробовал на 2007-ом) подтягиваются не в экспоненциальном формате. Подскажите исправлен ли баг в последующих версиях, если нет как зарегистрировать эту ошибку в microsoft?
__________________
"Считать метафору доказательством, поток праздных слов источником истины, а себя оракулом - это заблуждение, свойственное всем нам." Поль Валери Последний раз редактировалось driller; 28.06.2010 в 10:22. |
|
|
За это сообщение автора поблагодарили: kashperuk (5). |
28.06.2010, 11:27 | #2 |
Axapta
|
Цитата:
1,000 Ошибка ожидаем 0,001
0,056 Без ошибки 0,001 Без ошибки |
|
28.06.2010, 11:58 | #3 |
Модератор
|
Цитата:
\Classes\Global\num2expstr Перед импортом '1e-3' можно же спокойно преобразовать в '1.e-3', тем более понимание есть. P.S. DAX 2009 EE SP1 Hotfix Rollup 4 (5.0.1500.2116)
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|
28.06.2010, 12:34 | #4 |
Участник
|
А вот еще интересно, что и '.1-3', и '.1e-3' преобразуются в ноль.
|
|
28.06.2010, 13:09 | #5 |
Сам.AX
|
Спасибо. Значит сломали, давно но ещё не заметили. Нужно оформлять баг-репор не подскажете как? Просто ещё не сталкивался с этим...
__________________
"Считать метафору доказательством, поток праздных слов источником истины, а себя оракулом - это заблуждение, свойственное всем нам." Поль Валери |
|
28.06.2010, 13:20 | #6 |
Сам.AX
|
str2num_RU в 4-ке нету, и видимо предложенный вами вариант работает только вместе с ним потому как num2expstr на входе ждет "real r".Не спорю вариантов обхода может быть масса, когда уже знаешь где споткнулся. Просто не приятно когда натыкаешься на такие системные баги, представь при импорте несколько тысяч строк с такое ошибок попалось меньше двух десятков и только после довольно длительного времени.
__________________
"Считать метафору доказательством, поток праздных слов источником истины, а себя оракулом - это заблуждение, свойственное всем нам." Поль Валери |
|
29.06.2010, 06:54 | #7 |
Сам.AX
|
Опять же в отладчике видно что вариант с '.1e-3', 3-ка обрабатывает нормально, а '.1-3' передавать наверное не корректно, думаю присутствие "E" (exponent) является обязательным.
__________________
"Считать метафору доказательством, поток праздных слов источником истины, а себя оракулом - это заблуждение, свойственное всем нам." Поль Валери |
|
01.07.2010, 15:56 | #8 |
Участник
|
Создал баг в системе для АХ6.
Спасибо за сообщение об ошибке |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Ошибка в Данных компании DAX2009 | 8 | |||
Ошибка при доступе к подключению к базе данных | 11 | |||
Ошибка в формате числа. | 7 | |||
Ошибка при обработке С-Ф | 7 | |||
Русская локализация Axapta 3 ? | 59 |
|