oracle FM去掉了小数点后的0,怎么去掉小数点?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle FM去掉了小数点后的0,怎么去掉小数点?相关的知识,希望对你有一定的参考价值。
现在出现一个问题,数据库中有一列天数(列名 : ts) 保留一位小数,我需要转换成字符转连接显示多少天 to_char(ts,FM90.9)||'天',但是问题来了 ,0.5天的现在显示'0.5天'但是里面有1.0天,我需要直接显示1天,现在只显示'1.'天,我怎么把这个.去掉???
您可以使用 `FM99990.0` 来格式化转换,这样可以将小数点后面的 0 去掉,同时可以保留一位小数。具体地:```
to_char(ts, 'FM99990.0') || '天'
```
例如,如果 `ts` 的值是 1.0,则上述语句返回的结果是 `'1天'`;如果 `ts` 的值是 0.5,则返回的结果是 `'0.5天'`。追问
这个语句返回的是1.0天
参考技术A 你可以使用以下SQL语句来将列名为"ts"的天数列保留一位小数,并将其转换为字符型,如果小数部分为0,则只显示整数部分,否则显示小数部分:SELECT CASE
WHEN MOD(ts, 1) = 0 THEN to_char(ts, 'FM99990') || '天'
ELSE to_char(ts, 'FM99990.9', 'NLS_NUMERIC_CHARACTERS=''.,''') || '天'
END AS ts_display
FROM your_table;
上述SQL语句使用了CASE表达式和MOD函数来判断小数部分是否为0,如果小数部分为0,则使用"FM99990"格式化整数部分,否则使用"FM99990.9"格式化小数部分和整数部分。其中,"FM"表示去掉前导空格,"99990"表示至少显示5位整数,"9"表示显示一位小数。
另外,为了保证小数点的正确显示,还需要在to_char函数的第三个参数中指定小数点的显示字符为".",千位分隔符的显示字符为","。具体地,可以使用"NLS_NUMERIC_CHARACTERS=''.,'''"来指定这些参数。
通过这样的方式,即可实现将小数部分为0的天数显示为整数部分加上"天",而小数部分不为0的天数显示为带一位小数的数字加上"天",并且不显示小数点的情况下保留小数部分。
如何去掉小数点后多余的0
private java.math.BigDecimal A;
public java.math.BigDecimal getA()
return A;
public void setA(java.math.BigDecimal a)
A = a;
如何把返回的A纸后面多余的0去掉,比如1000会显示成1000.0000,1000.25会成1000.2500,要把多余的0去掉 直接在上面改或者写一个转换成String的方法 详细点
不知道如何用getA()返回的值作为参数,调用2楼的removeTailZero方法,而且返回的String getA()要返回一个BigDecimal 类型的
public String removeTailZero(BigDecimal b)
String s = b.toString();
int i, len = s.length();
for (i = 0; i < len; i++)
if (s.charAt(len - 1 - i) != '0')
break;
if (s.charAt(len - i - 1) == '.')
return s.substring(0, len - i - 1);
return s.substring(0, len - i);
参考技术A 满 意回答回把整数后面的0也去掉了,可以换下面的方法:
public String removeTailZero(BigDecimal b)
String s = b.toString();
return s.replaceAll(("(\\d+\\.\\d*[1-9])0+$"), "$1");
参考技术B replace()方法
以上是关于oracle FM去掉了小数点后的0,怎么去掉小数点?的主要内容,如果未能解决你的问题,请参考以下文章
oracle 去掉小数点后不必要的0, 我要精确到小数点后三位,但后面如果是0刚不显示出来