Integer Variablen im IPS nur von -2.147.483.647 bis +2.147.483.647

Hi!

Bin da grad über etwas gestolpert was ich mir erst nicht erklären konnte…
Aber dann dachte ich mir schon wo der Hund begraben ist und nach einem kurzen Test war es klar.

<?
$Integer_IPS_Variable = 11111;
$Float_IPS_Variable = 22222;

$millionen = 999999999; // 999 Millionen ...
SetValueInteger($Integer_IPS_Variable, $millionen);
SetValueFloat($Float_IPS_Variable, $millionen);
var_dump(GetValue($Integer_IPS_Variable));
var_dump(GetValue($Float_IPS_Variable));

echo "-----------------------------".PHP_EOL;

$milliarden = 2147483647; // 2 Milliarden 147 Millionen 483 Tausend 647
SetValueInteger($Integer_IPS_Variable, $milliarden);
SetValueFloat($Float_IPS_Variable, $milliarden);
var_dump(GetValue($Integer_IPS_Variable));
var_dump(GetValue($Float_IPS_Variable));

echo "-----------------------------".PHP_EOL;

$milliarden = 2147483648; // 2 Milliarden 147 Millionen 483 Tausend 648
SetValueInteger($Integer_IPS_Variable, $milliarden);
SetValueFloat($Float_IPS_Variable, $milliarden);
var_dump(GetValue($Integer_IPS_Variable));
var_dump(GetValue($Float_IPS_Variable));

echo "-----------------------------".PHP_EOL;

$milliarden = 999999999999; // 999 Milliarden ...
SetValueInteger($Integer_IPS_Variable, $milliarden);
SetValueFloat($Float_IPS_Variable, $milliarden);
var_dump(GetValue($Integer_IPS_Variable));
var_dump(GetValue($Float_IPS_Variable));
?>

Ausgabe vom Script:

int(999999999)
float(999999999)

int(2147483647)
float(2147483647)

int(-2147483648)
float(2147483648)

int(-2147483648)
float(999999999999)

Integer-Datentyp (Visual Basic) | Microsoft Docs

Was will ich damit sagen? Wir brauchen einen anderen Datentyp bei Integer-Variablen im IPS :smiley:

Grüße,
Chris

Finde ich auch. Geht aber nur mit PHP7. Und dann soweit ich weiß nur mit den 64-Bit Versionen.

paresy

Innerhalb von PHP (einem Script) klappt das mit großen Integern im IPS. Aber sobald eine IPS-Variable „dazwischen kommt“, nicht mehr. Also ist das „Problem“ doch nur IPS selbst?!

IPS ist doch 64 Bit und könnte damit auch Long, oder? Zumindest wollt ihr doch ein 64 Bit OS als Basis?!

Grüße,
Chris

Windows und Ubuntu ist 64Bit.
MacOS weiß ich nicht, ARM (Pi) 32Bit.
Und dann braucht es unter Windows PHP7.
PHP: Integers - Manual
Also wohl erstmal abwarten…
Michael

Genau. Insbesondere PHP 5.6 auf Windows kann trotz „64-Bit“ Version kein 64-Bit :wink:

paresy

Windows… Tzzzz :smiley:

Aber ja, hatte den Pi vergessen… :slight_smile:

Grüße,
Chris