function writeDouble($value) { $stream = 'D'; $stream .= HessianUtils::doubleBytes($value); return $stream; }
function writeDouble($value) { $frac = abs($value) - floor(abs($value)); if ($value == 0.0) { return pack('c', 0x5b); } if ($value == 1.0) { return pack('c', 0x5c); } // Issue 10, Fix thanks to nesnnaho...@googlemail.com, if ($frac == 0 && $this->between($value, -127, 128)) { return pack('c', 0x5d) . pack('c', $value); } if ($frac == 0 && $this->between($value, -32768, 32767)) { $stream = pack('c', 0x5e); $stream .= HessianUtils::floatBytes($value); return $stream; } // TODO double 4 el del 0.001, revisar $mills = (int) ($value * 1000); if (0.001 * $mills == $value) { $stream = pack('c', 0x5f); $stream .= pack('c', $mills >> 24); $stream .= pack('c', $mills >> 16); $stream .= pack('c', $mills >> 8); $stream .= pack('c', $mills); return $stream; } // 64 bit double $stream = 'D'; $stream .= HessianUtils::doubleBytes($value); return $stream; }