java.math.BigDecimal cannot be cast to java.lang.Float

大致意思:BigDecimal类型不能直接强行转换成Float类型

当我用FlinkCDC监听数据库,对获取到的数据进行转换计算时,发生了这个报错,下面是我的代码

Float  rating= (Float) valueJson.get("rating");

解决方法:BigDecimal -> String -> Float

float rating = Float.parseFloat(valueJson.get("rating").toString());

ps:BigDecimal 也不能直接强转为String,需要调用toString()方法

我数据库的数据类型为Float,不知道为什么监听到的数据类型变为了BigDecimal

思考:当发生这类(某类型不能转换为某类型)的问题,都应该先考虑Java底层类之间的继承、转换关系

posted @ 2023-01-15 16:01  MrSponge  Views(911)  Comments(0)    收藏  举报