JSpinner 浮点数输入可能吗?如何?
Is a JSpinner float input possible?how?
是否可以让 JSpinner 处理浮点数?我有像 10E-20 这样的浮点数,所以我不能使用 Doubles,它必须是浮点数...但是没有 class 处理浮点数的 SpinnerNumberModel ...
首先我不太明白为什么你不能使用双打,但是没关系。
SpinnerNumberModel
能够处理浮点数,但你必须将它们作为 Float
对象来处理。有 this 构造函数,它接受 Number
和 Comparable
对象。
但请记住,float 无法表示那么小的数字。对于如此高的精度,您应该使用 BigDecimal
class,它也是 Number
的子 class。(Javadoc BigDecimal)
以下是 Java 的 Number
、Integer
、Double
、Float
的工作方式。
java.lang.Number
是 java.lang.Integer
、java.lang.Double
以及 java.lang.Float
、....
的超类型
SpinnerNumberModel
class有如下构造函数
public SpinnerNumberModel(Number value,
Comparable minimum,
Comparable maximum,
Number stepSize)
我完全看不出为什么我们不能提供 Float
而不是 Number
,因为 Float
是 Number
的子类型。浮点数是引用类型,而不是原始浮点数。
Float value = new Float(50.28817271727);
Float step = new Float(5.29182);
SpinnerNumberModel model = new SpinnerNumberModel(value, null, null, step);
是否可以让 JSpinner 处理浮点数?我有像 10E-20 这样的浮点数,所以我不能使用 Doubles,它必须是浮点数...但是没有 class 处理浮点数的 SpinnerNumberModel ...
首先我不太明白为什么你不能使用双打,但是没关系。
SpinnerNumberModel
能够处理浮点数,但你必须将它们作为 Float
对象来处理。有 this 构造函数,它接受 Number
和 Comparable
对象。
但请记住,float 无法表示那么小的数字。对于如此高的精度,您应该使用 BigDecimal
class,它也是 Number
的子 class。(Javadoc BigDecimal)
以下是 Java 的 Number
、Integer
、Double
、Float
的工作方式。
java.lang.Number
是 java.lang.Integer
、java.lang.Double
以及 java.lang.Float
、....
SpinnerNumberModel
class有如下构造函数
public SpinnerNumberModel(Number value,
Comparable minimum,
Comparable maximum,
Number stepSize)
我完全看不出为什么我们不能提供 Float
而不是 Number
,因为 Float
是 Number
的子类型。浮点数是引用类型,而不是原始浮点数。
Float value = new Float(50.28817271727);
Float step = new Float(5.29182);
SpinnerNumberModel model = new SpinnerNumberModel(value, null, null, step);