Mercurial Hosting > luan
view src/luan/LuaNumber.java @ 44:57054fa43189
implement table lib
git-svn-id: https://luan-java.googlecode.com/svn/trunk@45 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Wed, 26 Dec 2012 23:53:25 +0000 |
parents | 8896068e0a4b |
children |
line wrap: on
line source
package luan; public final class LuaNumber implements Comparable<LuaNumber> { final double n; private LuaNumber(double n) { this.n = n; } public double value() { return n; } // convert to Lua format @Override public String toString() { String s = Double.toString(n); int iE = s.indexOf('E'); String ending = null; if( iE != -1 ) { ending = s.substring(iE); s = s.substring(0,iE); } if( s.endsWith(".0") ) s = s.substring(0,s.length()-2); if( ending != null ) s += ending; return s; } @Override public boolean equals(Object obj) { if( !(obj instanceof LuaNumber) ) return false; LuaNumber ln = (LuaNumber)obj; return n == ln.n; } @Override public int hashCode() { return Double.valueOf(n).hashCode(); } @Override public int compareTo(LuaNumber ln) { return Double.compare(n,ln.n); } public static LuaNumber of(double n) { return new LuaNumber(n); } private static LuaNumber[] ints = new LuaNumber[100]; static { for( int i=0; i<ints.length; i++ ) { ints[i] = new LuaNumber(i); } } public static LuaNumber of(int n) { if( 0 <= n && n < ints.length ) return ints[n]; return new LuaNumber(n); } public static LuaNumber of(Number n) { return n instanceof Integer ? of(n.intValue()) : of(n.doubleValue()); } }