12.02.2007, 15:40 | #1 |
Участник
|
str2num проблема
Почему в Аxапта проверка идет по одному "алгоритму", а преобразование по другому...
Конкретно, - "запятая" это "неправильный" симпвол, и поэтому не правильно преобразует такие флоат-ы. Понятно, что можно strreplace()... но всё равно как то не красиво. X++: static void testFloats(Args _args) { str s = "5,56"; real r = 5.56; ; if (str2numok(s) && r != str2num(s)) { info("wtf"); } else { info("ok"); } } Последний раз редактировалось Delfins; 12.02.2007 в 16:08. |
|
12.02.2007, 15:47 | #2 |
Moderator
|
PHP код:
str2num(s) = 5,00 Upd: Извиняюсь, сразу не до конца понял вопрос Последний раз редактировалось DreamCreator; 12.02.2007 в 15:52. |
|
12.02.2007, 15:50 | #3 |
Axapta
|
Цитата:
Можно просто убрать запятую из метода str2numok и все, тогда все будет чуть более "корректно". Этот метод в стандартной Аксапте вообще только 1 раз используется в классе RTax25StdOperandType_Constant. А вот если надо, чтобы и запятая обрабатывалась, то да, надо strreplace() использовать. Написать просто свой метод str2numAdv() и вместо str2num() всегда вызывать его. PS Код лучше обрамлять тегом XPP, а не Code. Тогда будет правильно работать подсветка текста. Как вставить кусок кода? |
|
12.02.2007, 16:13 | #4 |
Участник
|
Это чисто принципиально... Я этот метод не использую, но согласитесь, что "5.36" и "5,36" в формате TEXT в принципе должны обозначать одно и тоже... Ну типа "число" Хотя документация молчит на этот счет
ПС: всё это связано с импортами ППС: топик чисто философский |
|
12.02.2007, 17:13 | #5 |
Участник
|
А вы посмортите, как реализуется эта функция (str2numok) и вопросы у вас отпадут. Например, это "e.ee523,ee56e.e321" - по ее мнению число
__________________
Axapta v.3.0 sp5 kr2 |
|
12.02.2007, 17:53 | #6 |
Участник
|
Видел, видел... надо regexp-ом проверять
|
|