java.math.biginteger cannot be cast_java the selection cannot be
JAVA The Cannot be cast Math Selection biginteger
2023-06-13 09:12:25 时间
出现这个错误的原因是将数据库中数值型取出保存到 map<String,Object>中,需要进行数值运算,转成double类型时抛出ava.math.BigDecimal cannot be cast to java.lang.Double。 解决办法; 1.转成string
String num_str=map.get("key").toString();
只听到从架构师办公室传来架构君的声音: 清溪奔快,不管青山碍。有谁来对上联或下联?
2.转成double,需承接上面的转成String
此代码由Java架构师必看网-架构君整理
Double num_double=Double.parseDouble(num_str)
从数据库取count、sum等函数的值需要转化成Integer的时候出现 java.math.BigDecimal cannot be cast to java.lang.String的报错 错误代码 //code
int num = (int)map.get(key);
解决方法
此代码由Java架构师必看网-架构君整理
int num = Integer.parseInt(String.valueOf(map1.get(key)))
数字类型的String字符串转换为浮点数通常采用parseDouble()和valueOf()方法,两者主要是存在以下两点区别。
区别一:参数区别
Double.parseDouble(java.lang.String)的参数只能是String,如果参数改为double类型提示“The method parseDouble(String) in the type Double is not applicable for the arguments (double)”错误。
Double.valueOf()的参数类型可以是浮点型或者是字符串均可。
String pi = "3.1415926";
double floatOrDouble = 3.1415926;
double parseDouble = Double.parseDouble(pi);
//提示错误 Change type of"floatOrDoubleP" to "String"
//double floatOrDoubleP = Double.parseDouble(floatOrDouble);
System.out.println(parseDouble);
//System.out.println(floatOrDoubleP);
Double valueOf = Double.valueOf(pi);
Double floatOrDoubleV = Double.valueOf(floatOrDouble);
System.out.println(valueOf);
System.out.println(floatOrDoubleV);
控制台输出结果: 3.1415926 3.1415926 3.1415926 区别二:返回类型
Double.parseDouble(java.lang.String)把数字类型的字符串转换成double类型
Double.valueOf()方把数字类型的字符串转换成Double类型
Double.parseDouble()方法的源码:
public static double parseDouble(String s) throws NumberFormatException {
return FloatingDecimal.readJavaFormatString(s).doubleValue();
}
Double.valueOf()方法的源码:
public static Double valueOf(String s) throws NumberFormatException {
// new Double()
return new Double(FloatingDecimal.readJavaFormatString(s).doubleValue());
}
通过格式化小数点位数两者结果相同,可以看出除参数和返回类型外两者区别不大。
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(Double.parseDouble(pi)));
System.out.println(df.format(Double.valueOf(pi)));
控制台输出结果: 3.14 3.14 Integer工具类也是很相似的,但是Integer的valueOf内部实现的时候会有一些不同。 Integer.valueOf()方法的源码:
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
相关文章
- java 104规约_IEC104规约,Java开发主站程序
- 【深入Java基础】HashMap的基本用法
- java中打印数组的方法_Java数组方法–如何在Java中打印数组
- java生成时间戳类型_Java获取当前时间戳的方法有哪些
- 【Java线程】锁机制:synchronized、Lock、Condition
- 什么是java虚拟机(Java Virtual Machine)?
- 怎么下载java_怎样下载Java的环境?
- 在线学习Java的几个网站,别再盲目学习java了![通俗易懂]
- 大数据必学Java基础(七十二):System类对IO流的支持
- 一文搞懂Java异步编程之FutureTask
- Spring Boot | 集成MapStruct实现不同类型Java对象间的自动转换
- 【错误记录】Flutter 编译报错 ( The parameter ‘‘ can‘t have a value of ‘null‘ because of its type, but the im )
- java中的DTO DAO
- 【Android Gradle 插件】gradle.properties 中配置编译参数并在 Java 代码 BuildConfig 中调用该参数
- java压缩与解压(Java.util.zip)详解编程语言
- 程序Linux命令调用Java程序实现交互(linux命令java)
- 时间设置Java环境下Redis过期时间的调整(redisjava过期)
- 使用Java优雅地控制Redis过期时间(redisjava过期)