Аналитика http://geosystema.net/forum/ |
|
Ошибка разделителя вещественных чисел в скриптах http://geosystema.net/forum/viewtopic.php?f=5&t=2031 |
Страница 1 из 1 |
Автор: | pippa [ 18 янв 2011 14:08 ] |
Заголовок сообщения: | Ошибка разделителя вещественных чисел в скриптах |
В скрипте есть формула - @if $v<$max then @goto %skip1 Читаю Лог - и что я вижу IF 219266,39<43486,85 then @goto %skip1 0 и IF 164110,64<219266,39 then @goto %skip1 0 Я чуть с ума не сошла думая - что и правда 164110,64 больше 219266,39 Пока умные люди подсказали - что попробовать поменять знак в системных настройках - с , на . - и правда получилось! Получается что в скриптовом языке не определяет системные настройки для работы - а по умолчанию используется только точка. Тогда
- а то это скрипт на одной машине будет работать, а на другой - зуськи. Спасибо. |
Автор: | Sergey Oleynik [ 07 фев 2011 10:08 ] |
Заголовок сообщения: | Re: Ошибка разделителя вещественных чисел в скриптах |
pippa писал(а): Получается что в скриптовом языке не определяет системные настройки для работы - а по умолчанию используется только точка. Да. Десятичным разделителем всегда должна быть точка. Так принято во всех языках программирования. pippa писал(а): - а то это скрипт на одной машине будет работать, а на другой - зуськи. Спасибо. Да, как раз наоборот. Например 3.2>3.1 сработает правильно на любой машине, независимо от ее системных настроек. А 3,2>3,1 не сработает. Другое дело, откуда именно в вашем скрипте появились запятые. Вы получали в скрипте координаты какой-то функцией? |
Автор: | pippa [ 08 фев 2011 10:41 ] |
Заголовок сообщения: | Re: Ошибка разделителя вещественных чисел в скриптах |
Sergey Oleynik писал(а): pippa писал(а): Получается что в скриптовом языке не определяет системные настройки для работы - а по умолчанию используется только точка. Да. Десятичным разделителем всегда должна быть точка. Так принято во всех языках программирования. pippa писал(а): - а то это скрипт на одной машине будет работать, а на другой - зуськи. Спасибо. Да, как раз наоборот. Например 3.2>3.1 сработает правильно на любой машине, независимо от ее системных настроек. А 3,2>3,1 не сработает. Другое дело, откуда именно в вашем скрипте появились запятые. Вы получали в скрипте координаты какой-то функцией? Да просто площади сравнивала - а площади выдавались с запятыми - смотрите выше выписку из лог файла. |
Автор: | Sergey Oleynik [ 08 фев 2011 11:49 ] |
Заголовок сообщения: | Re: Ошибка разделителя вещественных чисел в скриптах |
pippa писал(а): Да просто площади сравнивала - а площади выдавались с запятыми - смотрите выше выписку из лог файла. Там в выписке как раз не видно откуда взялись значения переменных. Но на всякий случай мы изменили проверку @If и теперь она понимает и точки и запятые. |
Автор: | voha [ 09 фев 2011 06:13 ] |
Заголовок сообщения: | Re: Ошибка разделителя вещественных чисел в скриптах |
Sergey Oleynik писал(а): Но на всякий случай мы изменили проверку @If и теперь она понимает и точки и запятые. Наскільки я розібрався, можна не турбуватись за розділювач цілої та дробової частини чисел в скриптах (нема різниці чи крапка чи кома), якщо використати @Calc Numeric(). Наприклад: $Obg=@Map.NextSelected 0 $T1=@Map.Object[$Obg].Point[1] $T2=@Map.Object[$Obg].Point[2] $X1=@StringPart 2 $T1 $X2=@StringPart 2 $T2 $X11=@Calc Numeric("$X1") $X22=@Calc Numeric("$X2") @If $X22>$X11 then @Break $X2">"$X1 @Dialog.Message $X2"<"$X1 Правильно було б, використовувати @Calc Numeric() скрізь, де в скрипті проводитимуться розрахунки чи логічні операції над дійсними числами (перевірити, чи розділювач в системі крапка чи кома, мабуть можна на початку скрипта). От, якби можна було б відповідною функцією визначити, змінити (не перевантажуючи для застосування) розділювач в ході виконання скрипта , було б толково. |
Автор: | pippa [ 10 фев 2011 10:31 ] |
Заголовок сообщения: | Re: Ошибка разделителя вещественных чисел в скриптах |
voha писал(а): От, якби можна було б відповідною функцією визначити, змінити (не перевантажуючи для застосування) розділювач в ході виконання скрипта , було б толково. вот это как раз считаю абсолютно лишним . То что было описано выше через функцию @Calc - за это гранд мерси. |
Автор: | voha [ 10 фев 2011 13:14 ] |
Заголовок сообщения: | Re: Ошибка разделителя вещественных чисел в скриптах |
Лишнім - так лишнім . А що скажете на таку справу Закрити текст скрипта паролем . Просто цікаво знати думку |
Страница 1 из 1 | Часовой пояс: UTC + 2 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |