package org.nutz.lang.util; import org.nutz.lang.Strings; public class FloatRange { public static FloatRange make(String s) { char[] cs = Strings.trim(s).toCharArray(); int i = 0; for (; i < cs.length; i++) { char c = cs[i]; if (c == ',' || c == ':') break; } if (i == cs.length) return make(Float.parseFloat(new String(cs))); float left = Float.parseFloat(String.valueOf(cs, 0, i)); return make(left, Float.parseFloat(String.valueOf(cs, ++i, cs.length - i))); } public static FloatRange make(float right) { return make(0, right); } public static FloatRange make(float left, float right) { return new FloatRange(left, right); } private float left; private float right; private FloatRange(float left, float right) { this.left = left; this.right = right; } public boolean in(float n) { return n > left && n < right; } public boolean on(float n) { return n == left || n == right; } public boolean inon(float n) { return on(n) || in(n); } public boolean gt(float n) { return n < left; } public boolean lt(float n) { return n > right; } /** * @param n * @return n >= left && n < right; */ public boolean linon(float n) { return n >= left && n < right; } /** * @param n * @return n > left && n <= right; */ public boolean rinon(float n) { return n > left && n <= right; } public float getLeft() { return left; } public void setLeft(float left) { this.left = left; } public float getRight() { return right; } public void setRight(float right) { this.right = right; } public String toString() { return String.format("%s:%s", left, right); } }