Название: ScriptEngine::evaluate("10*0.95") не вычисляется!!! Отправлено: DpoHro от Декабрь 08, 2007, 22:15 Код: QScriptValue res = qsEngine.evaluate("1400.0*0.95*1.3"); Чтото не пойму, целые числа если - то все нормально вычисляет, а с точкой - нифига... Я гдето не дочитал в документации? Если пишем: Код: res = qsEngine.evaluate("1499*3.14*1.5"); То результат получается 4497, то есть перемножилось 1499*3 до точки... Ничего не пойму... Qt 4.3.2/Win32 Название: Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!! Отправлено: DpoHro от Декабрь 08, 2007, 22:19 Возможно мелочь какая то, чтото в манах не дочитал, скорее всего ктото сталкивался...
Название: Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!! Отправлено: Mikor от Декабрь 08, 2007, 22:27 В 4.3.2 полно ошибок связанных с числами в QtScript. Сначала обнови до 4.3.3, может уже исправили...
Название: Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!! Отправлено: DpoHro от Декабрь 08, 2007, 22:30 не хотелось бы чтобы это была ошибка QtScript :(
Название: Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!! Отправлено: Mikhail от Декабрь 08, 2007, 22:46 Код: QScriptValue res = qsEngine.evaluate("1400.0*0.95*1.3"); Чтото не пойму, целые числа если - то все нормально вычисляет, а с точкой - нифига... Я гдето не дочитал в документации? Если пишем: Код: res = qsEngine.evaluate("1499*3.14*1.5"); То результат получается 4497, то есть перемножилось 1499*3 до точки... Ничего не пойму... Qt 4.3.2/Win32 Посмотри пример qscript. Работает все правильно. Вся проблемма у тебя с преобразованием QScriptValue res. Попробуй преобразовать в строку. (res.toString()). А полученную строку в число. Название: Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!! Отправлено: Dodge от Декабрь 08, 2007, 23:51 В 4.3.2 полно ошибок связанных с числами в QtScript. Сначала обнови до 4.3.3, может уже исправили... Это простите называется - "Пукнуть мозгом".Вы хоть 1 назвать сможете? ... я с модулем qtscript с 4.3.0 работаю, и каких либо замечаний по его работе, лично у меня не было. Название: Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!! Отправлено: DpoHro от Декабрь 09, 2007, 00:13 Я естесственно пробую для отладки перевести в QString, дабы посмотреть что там есть вообще. И результат там "0" если в строке перед первой точкой стоит 0
например такая строка "2000*0.95" отрабатывает с результатом 0 а вот такая "2000*3.14" с результатом "6000" то есть первая точка в строке и далее все откидывается и вычисляется что остается... Сдается мне что это не с проста. Пробовал заменить все точки на запятые, предположил, что десятые отделяются запятой, результат "2000*3,14" = 14 то есть то что после запятой. Сейчас сделал преобразование чисел в дробные, "2000*3.14" = "2000*(100*3+14)/100" Все вычисляется, но ясно что хотелось бы разобраться и написать все ПРАВИЛЬНО =) Название: Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!! Отправлено: Dodge от Декабрь 09, 2007, 00:50 Я естесственно пробую для отладки перевести в QString, дабы посмотреть что там есть вообще. И результат там "0" если в строке перед первой точкой стоит 0 например такая строка "2000*0.95" отрабатывает с результатом 0 а вот такая "2000*3.14" с результатом "6000" то есть первая точка в строке и далее все откидывается и вычисляется что остается... Сдается мне что это не с проста. Пробовал заменить все точки на запятые, предположил, что десятые отделяются запятой, результат "2000*3,14" = 14 то есть то что после запятой. Сейчас сделал преобразование чисел в дробные, "2000*3.14" = "2000*(100*3+14)/100" Все вычисляется, но ясно что хотелось бы разобраться и написать все ПРАВИЛЬНО =) хы...похоже дело в этом, 2000 - целое. Попробуйте написать 2000.0*3.14 Название: Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!! Отправлено: Swappp от Декабрь 09, 2007, 01:01 Я им не пользовался, но может проблема в локали? Для русской локали разделитель дробной и целой это ",", а для США и некоторых других ".". Но тут вопрос, как поступили троли? Если разделитель читается из локали, то получаются не переносимые скрипты, а если жестко точка, то могут быть проблемы с получением данных из строк, введенных пользователем...
Название: Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!! Отправлено: DpoHro от Декабрь 09, 2007, 01:22 Я естесственно пробую для отладки перевести в QString ... хы...похоже дело в этом, 2000 - целое. Попробуйте написать 2000.0*3.14 Я им не пользовался, но может проблема в локали? Для русской локали разделитель дробной и целой это ",", а для США и некоторых других ".". Но тут вопрос, как поступили троли? Если разделитель читается из локали, то получаются не переносимые скрипты, а если жестко точка, то могут быть проблемы с получением данных из строк, введенных пользователем... Я вот уже даже отошел от самой сути проги, пишу туда произвольные действия и что я только не пробовал, и точки и запятые... Ощущение, что точка и запятая в чистом виде - есть служебный символ. Пытался экранировать как в регах - синтаксическая ошибка... Название: Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!! Отправлено: Mikhail от Декабрь 09, 2007, 10:12 Код: QScriptValue res = qsEngine.evaluate("1400.0*0.95*1.3"); Чтото не пойму, целые числа если - то все нормально вычисляет, а с точкой - нифига... Я гдето не дочитал в документации? Если пишем: Код: res = qsEngine.evaluate("1499*3.14*1.5"); То результат получается 4497, то есть перемножилось 1499*3 до точки... Ничего не пойму... Qt 4.3.2/Win32 Посмотри пример qscript. Работает все правильно. Вся проблемма у тебя с преобразованием QScriptValue res. Попробуй преобразовать в строку. (res.toString()). А полученную строку в число. Еще раз настоятельно рекомендую посмотреть $(QTDIR)/examples/script/qscript. Нормально работающий пример от разработчика. Работает и с целыми и с дробями. |