Long - conversion to exact string representation works. arithmetic
authorMartin Soch <Martin.Soch@oracle.com>
Tue, 05 Feb 2013 16:32:14 +0100
brancharithmetic
changeset 6757d3da112e2c1
parent 669 3754580b6c67
child 676 eecf6077ec4e
Long - conversion to exact string representation works.
emul/mini/src/main/java/java/lang/Long.java
emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js
     1.1 --- a/emul/mini/src/main/java/java/lang/Long.java	Tue Feb 05 15:03:22 2013 +0100
     1.2 +++ b/emul/mini/src/main/java/java/lang/Long.java	Tue Feb 05 16:32:14 2013 +0100
     1.3 @@ -262,7 +262,7 @@
     1.4       * @param   i   a {@code long} to be converted.
     1.5       * @return  a string representation of the argument in base&nbsp;10.
     1.6       */
     1.7 -    @JavaScriptBody(args = "i", body = "return i.toString();")
     1.8 +    @JavaScriptBody(args = "i", body = "return i.toExactString();")
     1.9      public static String toString(long i) {
    1.10          if (i == Long.MIN_VALUE)
    1.11              return "-9223372036854775808";
     2.1 --- a/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js	Tue Feb 05 15:03:22 2013 +0100
     2.2 +++ b/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js	Tue Feb 05 16:32:14 2013 +0100
     2.3 @@ -37,8 +37,15 @@
     2.4          var a = [ 6,9,2,7,6,9,4,9,2,4 ];
     2.5          var s = '';
     2.6          var digit;
     2.7 -        var hi = this.hi;
     2.8 -        var low = this;
     2.9 +        var neg = this.hi < 0;
    2.10 +        if (neg) {
    2.11 +            var x = this.neg64();
    2.12 +            var hi = x.hi;
    2.13 +            var low = x;
    2.14 +        } else {
    2.15 +            var hi = this.hi;
    2.16 +            var low = this;
    2.17 +        }
    2.18          for (var i = 0; i < a.length; i++) {
    2.19              res += hi * a[i];
    2.20              var low_digit = low % 10;
    2.21 @@ -53,7 +60,7 @@
    2.22              }
    2.23              s = String(digit).concat(s);
    2.24          }
    2.25 -        return String(res).concat(s);
    2.26 +        return (neg ? '-' : '').concat(res).concat(s);
    2.27      }
    2.28      return String(this);
    2.29  };