Аналитика
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
Читаю Лог - и что я вижу :shock:
IF 219266,39<43486,85 then @goto %skip1
0
и
IF 164110,64<219266,39 then @goto %skip1
0

Я чуть с ума не сошла думая - что и правда 164110,64 больше 219266,39

Пока умные люди подсказали - что попробовать поменять знак в системных настройках - с , на . - и правда получилось! :lol:

Получается что в скриптовом языке не определяет системные настройки для работы :? - а по умолчанию используется только точка.
Тогда
    либо это нужно прописать в инструкции
,
    либо - исправить - чтобы работало с системными настройками

- а то это скрипт на одной машине будет работать, а на другой - зуськи.
Спасибо. :oops:

Автор:  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 не сработает.

Другое дело, откуда именно в вашем скрипте появились запятые. Вы получали в скрипте координаты какой-то функцией?

Да просто площади сравнивала :oops: - а площади выдавались с запятыми - смотрите выше выписку из лог файла.

Автор:  Sergey Oleynik [ 08 фев 2011 11:49 ]
Заголовок сообщения:  Re: Ошибка разделителя вещественных чисел в скриптах

pippa писал(а):
Да просто площади сравнивала :oops: - а площади выдавались с запятыми - смотрите выше выписку из лог файла.

Там в выписке как раз не видно откуда взялись значения переменных.
Но на всякий случай мы изменили проверку @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() скрізь, де в скрипті проводитимуться розрахунки чи логічні операції над дійсними числами (перевірити, чи розділювач в системі крапка чи кома, мабуть можна на початку скрипта).
От, якби можна було б відповідною функцією визначити, змінити (не перевантажуючи для застосування) розділювач в ході виконання скрипта :D , було б толково.

Автор:  pippa [ 10 фев 2011 10:31 ]
Заголовок сообщения:  Re: Ошибка разделителя вещественных чисел в скриптах

voha писал(а):
От, якби можна було б відповідною функцією визначити, змінити (не перевантажуючи для застосування) розділювач в ході виконання скрипта :D , було б толково.

вот это как раз считаю абсолютно лишним :roll: . То что было описано выше через функцию @Calc - за это гранд мерси. :P

Автор:  voha [ 10 фев 2011 13:14 ]
Заголовок сообщения:  Re: Ошибка разделителя вещественных чисел в скриптах

Лишнім - так лишнім :D . А що скажете на таку справу Закрити текст скрипта паролем :?: . Просто цікаво знати думку :wink:

Страница 1 из 1 Часовой пояс: UTC + 2 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/