数字类型除法
Division with Number type
我有一个服务器调用,其中 returns 值类型为“数字”。
这个值需要转换和存储。
例如:Transformation = value/10(这里的值是服务器的响应)
这些转换对于不同的数据点可能不同。现在,我认为转换是 (value/10)
Number modifiedValue = applyTransformation(event.getValue().getValue(),transformation);
private Number applyTransformation(Number value, String transformation) {
Number dinominator = Integer.parseInt(transformation.substring(transformation.lastIndexOf("/")+1));
Number modifiedValue = value/dinominator; //Produces an error
return modifiedValue;
}
错误:“参数类型 java.lang.Number、java.lang.Number 的运算符 / 未定义”
有什么处理这个问题的建议吗?
是除法运算符不适用于参数 java.lang.Number。但是你可以将 Number 转换为 java.math.BigDecimal 你可以应用它。示例代码如下。
输出为:
5
5.0
5.0
5
public static void main(String[] args) {
Number result = divideByNumber(10l, 2l);
//Test data
result = divideByNumber(10, 2l);
System.out.println(result);
result = divideByNumber(10.0, 2l);
System.out.println(result);
result = divideByNumber(10.0f, 2l);
System.out.println(result);
result = divideByNumber(new BigDecimal("10"), 2l);
System.out.println(result);
}
static Number divideByNumber(Number n1, Number n2){
return new BigDecimal(n1.toString()).divide(new BigDecimal(n2.toString()));
}
如果您阅读 java.lang.Number 的 API 文档,您会发现
它是一个抽象class,所以没有实例状态! (所以它不能容纳任何东西,除非它是从它延伸的 class 的一部分,例如 Integer , Double Float BigDecimal e.t.c。)
如果它确实以数字形式存在,最好通过 instanceof 使用测试找到其实际的“实例化”子类型
(本页代码换行按钮有问题)
收到的号码=event.getValue().getValue();
int recval;
float trans;
int transasint;
if (recieve instanceof Integer){
recval = ((Integer)recieve).intValue();
trans = recval/10;
transasint = new Float(trans).intValue();
}
我有一个服务器调用,其中 returns 值类型为“数字”。 这个值需要转换和存储。
例如:Transformation = value/10(这里的值是服务器的响应)
这些转换对于不同的数据点可能不同。现在,我认为转换是 (value/10)
Number modifiedValue = applyTransformation(event.getValue().getValue(),transformation);
private Number applyTransformation(Number value, String transformation) {
Number dinominator = Integer.parseInt(transformation.substring(transformation.lastIndexOf("/")+1));
Number modifiedValue = value/dinominator; //Produces an error
return modifiedValue;
}
错误:“参数类型 java.lang.Number、java.lang.Number 的运算符 / 未定义”
有什么处理这个问题的建议吗?
是除法运算符不适用于参数 java.lang.Number。但是你可以将 Number 转换为 java.math.BigDecimal 你可以应用它。示例代码如下。
输出为:
5
5.0
5.0
5
public static void main(String[] args) {
Number result = divideByNumber(10l, 2l);
//Test data
result = divideByNumber(10, 2l);
System.out.println(result);
result = divideByNumber(10.0, 2l);
System.out.println(result);
result = divideByNumber(10.0f, 2l);
System.out.println(result);
result = divideByNumber(new BigDecimal("10"), 2l);
System.out.println(result);
}
static Number divideByNumber(Number n1, Number n2){
return new BigDecimal(n1.toString()).divide(new BigDecimal(n2.toString()));
}
如果您阅读 java.lang.Number 的 API 文档,您会发现
它是一个抽象class,所以没有实例状态! (所以它不能容纳任何东西,除非它是从它延伸的 class 的一部分,例如 Integer , Double Float BigDecimal e.t.c。)
如果它确实以数字形式存在,最好通过 instanceof 使用测试找到其实际的“实例化”子类型 (本页代码换行按钮有问题)
收到的号码=event.getValue().getValue();
int recval; float trans; int transasint; if (recieve instanceof Integer){ recval = ((Integer)recieve).intValue(); trans = recval/10; transasint = new Float(trans).intValue();
}