Exemplo n.º 1
0
 function writeDouble($value)
 {
     $stream = 'D';
     $stream .= HessianUtils::doubleBytes($value);
     return $stream;
 }
Exemplo n.º 2
0
 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;
 }