如何将小数点后面的0输出,如何输出整数小数点前面的0没有了

数学||算法(54)
做题的时候遇到个问题,就是不要输出小数后的0, 查了一下,大家都说把浮点数转化成字符串,再去掉零。。太恐怖了,为什么不直接用cout呢, cout是不会输出小数后的0的。。。。我无语了
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:369744次
积分:4526
积分:4526
排名:第5853名
原创:118篇
转载:18篇
评论:67条
(1)(2)(1)(1)(4)(4)(2)(2)(2)(3)(7)(2)(2)(3)(5)(1)(1)(10)(1)(3)(2)(2)(2)(7)(21)(17)(5)(9)(4)(1)(2)(5)(2)Oracle如何显示小数点前面的0_数据库技术_Linux公社-Linux系统门户网站
你好,游客
Oracle如何显示小数点前面的0
来源:Linux社区&
作者:luckyman100
这几天监控程序的运行状况,发日志在记录0.开头的小数时,都只显示了 .*****,查看程序,是这样用的:
select to_char(num) from AAAAAA,测试下:
SQL& select to_char(0.258)
TO_C----.258
确实用to_char()函数有这样的问题,查下资料
TO_CHAR (number) converts n to a value of VARCHAR2 datatype, using the optional number format fmt. The value n can be of type NUMBER, BINARY_FLOAT, or BINARY_DOUBLE. If you omit fmt, then n is converted to a VARCHAR2 value exactly long enough to hold its significant digits.
原来to_char在做转化时,如果你不指定可是,它就按它的格式去做转化,结果就把0给转不见了,所以在做转化时要给定格式
SQL& SELECT to_char(0.2588,'fm99')& FROM&
TO_CHAR(0.258-------------0.2588
那个9可以根据情况进行增减,格式的个位数字要是0,不然也会显示不出来的。。
更多相关信息见 专题页面
相关资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款首页 & shell脚本学习bc显示小数点前的0 bc是强大而常用的计算工具。不过在除法运算时,如果得到的结果值小于1,得到的小数前面的0不存。本篇提供几个常用小数点前缺0的解决方法。[root@361way ~]# bc
bc 1.06.95
Copyright , , , 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
scale=2; 1/3
.33 打开bc进入交互模式,我们键入scale=2; 1/3 回车,看到结果0.33前的0没有---注意此处保留小数点人2位 scale=2不能少,少了结果为是0 。 解决方法如下:#!/bin/bash
res1=$(printf "%.2f" `echo "scale=2;1/3"|bc`)
res2=$(printf "%.2f" `echo "scale=2;5/3"|bc`)
#v=$(echo $big $small | awk '{ printf "%0.2f\n" ,$1/$2}')
v1=$(echo 1 3 | awk '{ printf "%0.2f\n" ,$1/$2}')
v2=$(echo 5 3 | awk '{ printf "%0.2f\n" ,$1/$2}')
mem1=`echo "scale=2; a=1/3; if (length(a)==scale(a)) print 0;print a "|bc`
mem2=`echo "scale=2; a=5/3; if (length(a)==scale(a)) print 0;print a "|bc`
echo res1 is $res1
echo res2 is $res2
echo v1 is $v1
echo v2 is $v2
echo mem1 is $mem1
echo mem2 is $mem2 这里提供了三种方法,其中第方法1、方法3使用的bc处理,方法2使用的awk处理。执行输出结果我们看下:[root@361way shell]# sh bc_point_zero.sh
res1 is 0.33
res2 is 1.66
v1 is 0.33
v2 is 1.67
mem1 is 0.33
mem2 is 1.66 三种方法我们可以看到,方法1、方法3对小数点后面的值不会四舍五入,而方法2(awk)方法使用printf 时会对小数点(浮点运算)的值四舍五入进位。所以浮点运行时还是建议使用awk处理。不过在取整数时,awk默认也是不会四舍五入的。# echo 5 3 | awk '{ printf "%d\n" ,$1/$2}'
# echo 5 3 | awk '{ printf "%d\n" ,$1/$2+0.5}'
# echo 4 3 | awk '{ printf "%d\n" ,$1/$2+0.5}'
1 awk在取整数运算时,是需要加0.5进行进位的。 注:没有进位其实和小数点后保留的位数有关的,在小数点后的位数大于4时会自动进行进位,具体可以参考维基百科数值修约规则 。
本站的发展离不开您的资助,金额随意,欢迎来赏!
分类: shell脚本学习 bash, shell您可能也喜欢Bash脚本15分钟进阶指导 shell中的getopt与getopts shell脚本之shift和getopts (1)select与shell脚本交互界面 shell数组的定义与应用 捐助本站
如您感觉本博客有用,可扫码向本博客捐赠近期文章 通过mysql+PHPExcel实现查询导出 zabbix告警查询页 zabbix告警事件归档与提取 mysql innodb异常修复 利用Jinja2模板生成html页面文章归档 文章归档 选择月份 2017年三月 &(3) 2017年二月 &(2) 2017年一月 &(3) 2016年十二月 &(4) 2016年十一月 &(6) 2016年十月 &(5) 2016年九月 &(3) 2016年八月 &(6) 2016年七月 &(3) 2016年六月 &(10) 2016年五月 &(18) 2016年四月 &(5) 2016年三月 &(2) 2016年二月 &(3) 2016年一月 &(7) 2015年十二月 &(8) 2015年十一月 &(9) 2015年十月 &(17) 2015年九月 &(9) 2015年八月 &(24) 2015年七月 &(11) 2015年六月 &(15) 2015年五月 &(23) 2015年四月 &(14) 2015年三月 &(22) 2015年二月 &(15) 2015年一月 &(24) 2014年十二月 &(13) 2014年十一月 &(16) 2014年十月 &(19) 2014年九月 &(18) 2014年八月 &(18) 2014年七月 &(20) 2014年六月 &(21) 2014年五月 &(24) 2014年四月 &(16) 2014年三月 &(29) 2014年二月 &(22) 2014年一月 &(22) 2013年十二月 &(24) 2013年十一月 &(20) 2013年十月 &(18) 2013年九月 &(16) 2013年八月 &(16) 2013年七月 &(20) 2013年六月 &(21) 2013年五月 &(19) 2013年四月 &(18) 2013年三月 &(24) 2013年二月 &(21) 2013年一月 &(18) 2012年十二月 &(24) 2012年十一月 &(18) 2012年十月 &(17) 2012年九月 &(17) 2012年八月 &(18) 2012年七月 &(26) 2012年六月 &(36) 2012年五月 &(36) 2012年四月 &(28) 2012年三月 &(46) 2012年二月 &(23) 2012年一月 &(15) 2011年十二月 &(27) 2011年十一月 &(59) 2011年十月 &(19) 2011年九月 &(16) 2011年八月 &(46)小数点前面0显示的问题
在处理数据时发现一个问题,Oracle对于小于1的小数,小数点前面的0是不显示的。
SQL& create table t1_number (num number);
Table created
SQL& insert into t1_number values(0.3268);
1 row inserted
SQL& insert into t1_number values(0.);
1 row inserted
SQL& insert into t1_number values(6);
1 row inserted
SQL& insert into t1_number values(4.552686);
1 row inserted
Commit complete
SQL& column num format .9
SQL& select * from t1_
--------------------------
使用PL/SQL
DEV工具查看时是有前面的0的
通过column num
format .设置也可以显示前面的0
但是这些都只是显示的结果,而不是数据库保存结果
SQL& column num format
SQL& select * from
--------------------------
SQL& select substr(num,1,1) from
可以看到,无论前面出现多少位,通过substr函数获取的第一位任然是'.'
无论怎么转换,只要最终输出结果是数值型的,小数点前的0必然被丢弃,所以只有将数值转换为字符型,大致有两种方法:
1、直接使用to_char函数
首先实验一下将小数点前和小数点后都加上的格式:
SQL& select
to_char(num,'9999999') from
TO_CHAR(NUM,'9999999
--------------------
发现小数点前还是没有0,而小数点后的0多出来了
再实验一下小数点前和小数点后都加上格式:
SQL& select
to_char(num,'.') from
TO_CHAR(NUM,'
----------------------
发现小数点前是有0了,但是两边的0都多出来了,使用FM来去掉多于的0:
select to_char(num,'fm.') from
TO_CHAR(NUM,'FM0000000
----------------------
没有效果,说明FM只能去掉用9表示的格式中产生的0:
select to_char(num,'fm9999999') from
TO_CHAR(NUM,'FM99999
--------------------
但是这样还是没有0,最后发现可以将小数点前的第一位置为0即可(注意9的个数要大于数值的位数):
select to_char(num,'fm9999999') from
TO_CHAR(NUM,'FM99999
--------------------
检查一下第一位,没有问题:
select substr(to_char(num,'fm9999999'),1,1) from
2、使用decode函数
既然小于1的小数首位必然是'.',那就判断首位是否为'.',是则在前面加上'0'即可
select decode(substr(num,1,1),'.','0'||num,num) from
DECODE(SUBSTR(NUM,1,1),'.','0'||NUM,NUM)
-----------------------------------------
同样检查一下第一位,没有问题
select substr(decode(substr(num,1,1),'.','0'||num,num),1,1)
也可以写个函数来判断一下,不过可以用decode直接出来,感觉也没什么必要,暂时就这些吧。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 java截取小数点前面的 的文章

 

随机推荐