2012-04-01 19 views
5

Jak przekonwertować dodatnią liczbę całkowitą na wartość ujemną za pomocą Delphi? Wiem, że możesz użyć ABS(int), aby przekonwertować wynik negatywny na pozytywny, ale muszę go przekonwertować z pozytywnej na negatywną.Jak przekonwertować liczbę dodatnią na wartość ujemną?

+1

Jeśli wiesz, że 'A' jest dodatnia, i chcesz uzyskać liczbę ujemną z tą samą odległością od początku, po prostu wykonaj '-a'. Jeśli nie znasz znaku "a", a chcesz się upewnić, że jest ujemny lub zero w tym sensie, że zamieniasz 'a' na' -a', tylko jeśli 'a' jest dodatnie, możesz tak jak sugerował RBA, ale podejście Mef jest dużo lepsze: '-abs (a)'. –

Odpowiedz

16

z tego, co wiem, nie ma na to żadnej funkcji. można dokonać

if yourvariable > 0 then 
    yourvariable := -yourvariable; 
+1

Dzięki Yah thats right, głupi ze mnie tak samo jak C++ lol, myślałem delphi bardziej jako visual basic. – Tprice88

+2

@Tprice, Visual Basic miał ** jednoargumentowy operator minus ** tak jak Delphi przez wiele lat. –

+0

O, nigdy go nie użyłem na ich nie używam, ponieważ Visual Basic 6 odmawiam używania .Net. – Tprice88

36

Jeśli chcesz być absolutnie pewny, aby uzyskać wynik negatywny (lub zero), użyj

number := -abs(number) 
+1

nie powinno to być: liczba: = -1 * abs (liczba); ? –

+8

@TomHagen: -x = -1 * x ∀x ∈ ℝ. –

1
//converting a positive to negative 

$negnumber = $posnumber - $posnumber - $posnumber ; 

eg; 

$posnumber = 4; 

$negnumber = 4 - 4 - 4 ; 
$negnumber = -4; 
+12

Żartujesz, prawda? –

5

ehhh ... Za późno ale number := number * -1; będzie działać też ale to zmienia symbol dowolnej liczby, od ujemnej do pozytywnej i do tyłu ... Aby zapewnić wartość ujemną, przejdź do @Mef Odpowiedź


EDIT: nawet później, ale number := 0 - number; będzie działać zbyt ... To po prostu odwraca się symbol, a także

1

Niech n być Twój numer i formuła n-(n*2) = -n

Powiązane problemy