Author Topic: (fixed) Ошибки при работе с отрицательными числами  (Read 8106 times)

0 Members and 2 Guests are viewing this topic.

Виталий

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Добрый день!
Следующий скрипт должен давать в результате 25, а дает -25

Code: [Select]
define($A,-5)
define($sum,20)
logclear
logwrite("$A=",$A," $sum=",$sum)
$sum=$sum-$A
logshow(1)
logwrite("$A=",$A," $sum=",$sum)
halt

лог:
15:58:21 $A=-5 $sum=20
15:58:21 $A=-5 $sum=-25

Спасибо за ответ
« Last Edit: February 27, 2013, 05:08:43 AM by Johnny »

Johnny

  • Создатель
  • Герой форума
  • *
  • Posts: 593
    • View Profile
вот уже интересно

спасибо за отзыв. посмотрим. ну на первый взгляд очевидно, что парсеру не нравятся два минуса подряд

Виталий

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Указанная ошибка лечится путем "избавления" от операции "-" путем замены ее на две операции: умножение на -1 и сложение (но с разбивкой на две команды, иначе опять ошибка)
Code: [Select]
define($A,-5)
define($sum,20)
$B=$A*(0-1)
$sum=$sum+$B
print("$sum=$sum-$A=",$sum)
halt
Работает правильно с любыми по знаку значениями $A и $sum

Johnny

  • Создатель
  • Герой форума
  • *
  • Posts: 593
    • View Profile
ну да. я забыл, что даже описал эту ситуацию в справке по языку, раздел "основное"

СлавьЯнИнъ

  • Активный участник
  • ***
  • Posts: 179
    • View Profile
ну да. я забыл, что даже описал эту ситуацию в справке по языку, раздел "основное"
Это планируется скорректировать в будущих версиях, или останется особенностью?
Тоже имел с этим дело. Справка помогла исправить ситуацию.
добрый смех равняет всех

Bob

  • Зашел в гости
  • *
  • Posts: 17
    • View Profile
Доброго времени суток.
Так же столкнулся.
Code: (clickermann) [Select]
logclear
$s=50000
$h=5
$m=5
$s1=($s-$h*3600-$m*60)  // не правильный результат 32300
$s2=($s-($h*3600)-($m*60))  // правильный результат 31700
Print ($s1)
Print ($s2)
halt
Лог
20:17:57 32300
20:17:57 31700

ionich123

  • Зашел в гости
  • *
  • Posts: 19
    • View Profile
Пытался сделать скрипт, который бы чертил графики, но столкнулся с проблемой в виде глюков при работе с отрицательными числами...чтобы не было 2 знака подряд вместо =4*$x писал =$x*4... но что делать для выражения вида $z=$a*$x - если и $a и $x отрицательные, то постоянно выходит ошибка. Если есть способ обойти эту ошибку?
« Last Edit: December 30, 2012, 12:44:55 AM by ionich123 »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
В последней версии ошибка при умножении или делении чисел с минусом. Жди исправлений...