Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   как увеличить значение переменной не меняя знак? (http://www.flasher.ru/forum/showthread.php?t=116527)

skald 03.10.2008 02:01

как увеличить значение переменной не меняя знак?
 
собственно, вот и вопрос ..
наверно оч просто ...
как увеличить значение переменной не меняя знак?

darksranger 03.10.2008 02:49

какой знак ?

увеличение
Код:

var i:number = 0
trace(i) // 0
i++
trace(i) //1
i+=10
trace(i) //11


Obi 03.10.2008 15:32

Цитата:

Сообщение от skald (Сообщение 767884)
собственно, вот и вопрос ..
наверно оч просто ...
как увеличить значение переменной не меняя знак?

var *= 2 ?

skald 03.10.2008 18:12

не, ну я отсталый, но не настолько)))))

понятно, что умножение не влияет на знак ...
а меня интересует следубщее, ...

переменная увеличивается сначала в плюс, потом в минус. и я хотел узнать есть ли оператор, способный осуществить увеличение значения ... к примеру на 10.
если значение переменной -n, то -n-10, а если +n, то +n+10

проверять знак if-ом мне ненравится.

если такого оператора нет, то как можно выковырять знак в виде -1 или +1
мне пришла в голову тема, разделить на число >> чем значение переменной, а потом округлить, тогда остается знак, НО не нашел нужного механизма округления. (если в большую, то получается 1 или 0, а если в меньшую, то -1 или 0)

Волгоградец 03.10.2008 18:19

Код:

(Math.abs(n) + 10) * Math.abs(n)/n

Division 03.10.2008 18:26

ИМХО человеческий вариант это написать функцию, которая возвращает знак.
Код:

function Sign(num) {
  if (!num) return 0;
  return num>0?1:-1;
}

n+=Sign(n)*10;

UPD: Волгоградец, делить на ноль плохо (:

musat 03.10.2008 18:43

При -n-10 это не увеличение, а уменьшение)

skald 03.10.2008 18:54

2Волгоградец
спасибо ))) я похожий вариант тоже думал и пока он был наилучшим)))
2Division
спасибо, буду разбираться с возвращением значения ))) до этого еще не сталкивался )))

skald 03.10.2008 20:04

2Division
можно один коментарий )))

Код:

  if (!num) return 0;
  return num>0?1:-1;

эта проверка (!num) для того, чтобы убедиться, что у n есть значение??

Division 03.10.2008 20:15

Ну можно было бы написать
Код:

if (num==0) return 0;
Если ноль - возвращаем ноль. Если тебя нужно иначе, исправь (:


Часовой пояс GMT +4, время: 20:14.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.