Russian Qt Forum
Ноябрь 22, 2024, 11:38
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Qt Script, QtWebKit
>
ScriptEngine::evaluate("10*0.95") не вычисляется!!!
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: ScriptEngine::evaluate("10*0.95") не вычисляется!!! (Прочитано 8135 раз)
DpoHro
Гость
ScriptEngine::evaluate("10*0.95") не вычисляется!!!
«
:
Декабрь 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
Записан
DpoHro
Гость
Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!!
«
Ответ #1 :
Декабрь 08, 2007, 22:19 »
Возможно мелочь какая то, чтото в манах не дочитал, скорее всего ктото сталкивался...
Записан
Mikor
Гость
Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!!
«
Ответ #2 :
Декабрь 08, 2007, 22:27 »
В 4.3.2 полно ошибок связанных с числами в QtScript. Сначала обнови до 4.3.3, может уже исправили...
Записан
DpoHro
Гость
Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!!
«
Ответ #3 :
Декабрь 08, 2007, 22:30 »
не хотелось бы чтобы это была ошибка QtScript
Записан
Mikhail
Программист
Offline
Сообщений: 587
Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!!
«
Ответ #4 :
Декабрь 08, 2007, 22:46 »
Цитата: 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
Посмотри пример qscript.
Работает все правильно.
Вся проблемма у тебя с преобразованием QScriptValue res.
Попробуй преобразовать в строку. (res.toString()). А полученную строку в число.
Записан
Dodge
Гость
Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!!
«
Ответ #5 :
Декабрь 08, 2007, 23:51 »
Цитата: Mikor от Декабрь 08, 2007, 22:27
В 4.3.2 полно ошибок связанных с числами в QtScript. Сначала обнови до 4.3.3, может уже исправили...
Это простите называется - "Пукнуть мозгом".
Вы хоть 1 назвать сможете? ... я с модулем qtscript с 4.3.0 работаю, и каких либо замечаний по его работе, лично у меня не было.
Записан
DpoHro
Гость
Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!!
«
Ответ #6 :
Декабрь 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"
Все вычисляется, но ясно что хотелось бы разобраться и написать все ПРАВИЛЬНО =)
Записан
Dodge
Гость
Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!!
«
Ответ #7 :
Декабрь 09, 2007, 00:50 »
Цитата: 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"
Все вычисляется, но ясно что хотелось бы разобраться и написать все ПРАВИЛЬНО =)
хы...похоже дело в этом, 2000 - целое. Попробуйте написать 2000.0*3.14
Записан
Swappp
Гость
Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!!
«
Ответ #8 :
Декабрь 09, 2007, 01:01 »
Я им не пользовался, но может проблема в локали? Для русской локали разделитель дробной и целой это ",", а для США и некоторых других ".". Но тут вопрос, как поступили троли? Если разделитель читается из локали, то получаются не переносимые скрипты, а если жестко точка, то могут быть проблемы с получением данных из строк, введенных пользователем...
Записан
DpoHro
Гость
Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!!
«
Ответ #9 :
Декабрь 09, 2007, 01:22 »
Цитата: Dodge от Декабрь 09, 2007, 00:50
Цитата: DpoHro от Декабрь 09, 2007, 00:13
Я естесственно пробую для отладки перевести в QString ...
хы...похоже дело в этом, 2000 - целое. Попробуйте написать 2000.0*3.14
Пробовал, дело в том что... =)
Цитата: Swappp от Декабрь 09, 2007, 01:01
Я им не пользовался, но может проблема в локали? Для русской локали разделитель дробной и целой это ",", а для США и некоторых других ".". Но тут вопрос, как поступили троли? Если разделитель читается из локали, то получаются не переносимые скрипты, а если жестко точка, то могут быть проблемы с получением данных из строк, введенных пользователем...
Я вот уже даже отошел от самой сути проги, пишу туда произвольные действия и что я только не пробовал, и точки и запятые... Ощущение, что точка и запятая в чистом виде - есть служебный символ. Пытался экранировать как в регах - синтаксическая ошибка...
Записан
Mikhail
Программист
Offline
Сообщений: 587
Re: ScriptEngine::evaluate("10*0.95") не вычисляется!!!
«
Ответ #10 :
Декабрь 09, 2007, 10:12 »
Цитата: Mikhail от Декабрь 08, 2007, 22:46
Цитата: 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
Посмотри пример qscript.
Работает все правильно.
Вся проблемма у тебя с преобразованием QScriptValue res.
Попробуй преобразовать в строку. (res.toString()). А полученную строку в число.
Еще раз настоятельно рекомендую посмотреть
$(QTDIR)/examples/script/qscript
.
Нормально работающий пример от разработчика. Работает и с целыми и с дробями.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...