我就纳了闷了, flink用tableAPI不允许写入0.xxx的小数数值???, 合着flink开发人员就不知道存在0.xxx的数值? 不知道bigdecimal是从非0的值开始算长度的??? 转成字符串也是写入不进去的, 类型不匹配, 但是我也设置了字段类型了:
有没有大佬知道这个怎么解决呢
我就纳了闷了, flink用tableAPI不允许写入0.xxx的小数数值???, 合着flink开发人员就不知道存在0.xxx的数值? 不知道bigdecimal是从非0的值开始算长度的??? 转成字符串也是写入不进去的, 类型不匹配, 但是我也设置了字段类型了:
有没有大佬知道这个怎么解决呢
这个问题似乎与 Flink 的 Table API 中使用 BigDecimal 类型时的行为有关。根据您提供的信息,您试图将一个具有两位小数的 BigDecimal 数值写入到 Table API 中,但是遇到了问题。
首先,我理解您的困惑。在处理 BigDecimal 类型时,确实需要注意其精度和刻度。精度指的是 BigDecimal 数值的整数部分和小数部分的总位数,而刻度指的是小数点后的位数。
根据您提供的信息,您试图将一个具有两位小数的 BigDecimal(例如 0.0053)写入到 Flink Table API 中。报错可能是因为 Flink Table API 对 BigDecimal 类型的精度和刻度有一些限制。
为了解决这个问题,您可以尝试以下方法:
BigDecimal decimalValue = new BigDecimal("0.0053").setScale(2);
这将创建一个具有两位小数的 BigDecimal 对象,精度为 4(包括整数部分和小数部分的总位数)。
String stringValue = decimalValue.toString();
// 然后将字符串写入到 Table API 中
tableEnv.fromValues(stringValue).execute().print();
请注意,具体的解决方案可能取决于您使用的 Flink 版本、Table API 的配置以及您的具体需求。如果您能提供更多关于您的代码和环境的详细信息,我可能能够为您提供更具体的帮助。