最近遇到个小需求,就是前端输入一个公式,然后使用Oracle进行运算(这样公式可以Oracle的函数)。
SELECT ${formula} FROM DUAL
但是出现一个问题,就是运算结果小于1的时候,Oracle输出的值会去掉小数点前的0。
比如计算结果为"0.01",那他就输出 “.01”。
通过百度,找到方法加上了0。
SELECT to_char(${formula},'fm999999990.999999999') FROM DUAL
但是这种方法对于整数又非常不友好,会在整数的后面加上一个"."。
比如计算结果为"200",那他就输出 “200.”。
最后无奈,用Java做处理:
// Oracle 对于小于1的数不显示小数点前的0
if (".".equals(solution.substring(0, 1))) {
solution = "0" + solution;
}else if ("-.".equals(solution.substring(0, 2))) {
solution = "-0" + solution.substring(1);
}