java里如何在输出浮点数小数部分为0时自动将小数点和小数部分隐藏

rt在线等答案... rt在线等答案 展开
 我来答
匿名用户
2020-07-08
展开全部

可以直接以浮点数和其强转为整数的数值进行比较,相同则直接取整数,即去掉小数点;

否则,即不同时,原样输出;

PS.

kaixingui2012
推荐于2017-10-04 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6427万
展开全部

如果浮点数据比较小,可采用(int)强制转换方式,进行取整数后的两数比较,确定是否有小数位,进行相应的格式输出。但,浮点数据范围远超过int所能承受的范围,所以,这种方法局限性很大,所以,采用字符串检查处理方法可以满足所有浮点数的情况,代码如下,供参考:

public class test {
    static String fmt_prt_double( Double d ) //自定义格式化输出函数
    {
        String s=String.format("%f", d);//将浮点数转为字符串
        int i;
        for( i=s.length()-1;i>=0;i-- ) //从串尾向前检查,遇到非0数据结束循环
        {
            if ( s.charAt(i)=='.' ) //遇到小数点结束,说明是个整数
                break;
            if ( s.charAt(i) != '0' ) //遇到小数中有非0值,结束
            {
                i++;
                break;
            }
        }
        return s.substring(0,i); //返回处理后的子串
    }
    //以下进行相应的数据验证
    public static void main(String[] args) {
        Double dd = 1234567890123.00;
        System.out.println( fmt_prt_double(dd) );
        dd = 1234567890123.01;
        System.out.println( fmt_prt_double(dd) );
        dd = 0.0;
        System.out.println( fmt_prt_double(dd) );
        dd = 0.00023;
        System.out.println( fmt_prt_double(dd) );
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
long_557799
推荐于2017-09-24 · 超过26用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:0
展开全部
楼上的解法有点问题,当小数部分不为0时也截取了。我的想法是将小数部分截取出来与0比较。下面是代码
double a=10.00d;
long result = 0;
String str=a+""; //将这个浮点数转化为字符串
int index=str.indexOf(".");
String s=str.substring(index+1,str.length());//获取小数部分的子字符串
int in=Integer.parseInt(s);//将代表小数部分的字符串转化为整数
if(in==0) //如果小数部分等于0,则去掉小数部分和小数点
{
result=Math.round(a);
System.out.println(result);
}
else //否则直接打印出这个浮点数
{
System.out.println(a);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大秦铁
2015-08-30 · TA获得超过1408个赞
知道小有建树答主
回答量:614
采纳率:33%
帮助的人:144万
展开全部
先将浮点数转换为字符串,然后判断"."之后是否为0.如果为0就只保留 . 之前的数,然后在把字符串转换为浮点数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ace2c31b4
2009-05-30 · TA获得超过656个赞
知道小有建树答主
回答量:164
采纳率:0%
帮助的人:149万
展开全部
首先要判断这个数是不是等于0,判断方法不是用==,而是:
double a=0.0d;
long result=0l;
if(a>1e-3 || a<-1e-3){
result=Math.round(a);
}
此时result就是你要的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式