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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java里如何在输出浮点数小数部分为0时自动将小数点和小数部分隐藏相关的知识,希望对你有一定的参考价值。

rt在线等答案

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

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

PS.

参考技术A

如果浮点数据比较小,可采用(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) );
    

参考技术B 楼上的解法有点问题,当小数部分不为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);
本回答被提问者采纳
参考技术C 先将浮点数转换为字符串,然后判断"."之后是否为0.如果为0就只保留 . 之前的数,然后在把字符串转换为浮点数。 参考技术D 首先要判断这个数是不是等于0,判断方法不是用==,而是:
double a=0.0d;
long result=0l;
if(a>1e-3 || a<-1e-3)
result=Math.round(a);

此时result就是你要的值

请问java提供啥方法实现将一个浮点数,四舍五入只保留小数点后两位

第一:从数据库读出时可以进行操作,将读出的数据进行处理后输出,这里可以用数据库提供的方法。这里不多提。
第二:也可以用JAVA进行处理,方法很多。
这里说两种吧:
第一
BigDecimal bd = new BigDecima("5.14881");
bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP); System.out.println(bd);

第二
static double convert(double value)
long l1 = Math.round(value*100); //四舍五入
double ret = l1/100.0; //注意:使用 100.0 而不是 100
return ret;


public static void main(String[] args)
// BigDecimal bd = new BigDecimal("3.14159265");
// bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP);
double bd = convert(3.14559);

System.out.println(bd);
参考技术A (float)Math.round(yournum*100)/100;

yournum 就是你给出的浮点数,然后执行这句话就是你要的结果。以后提问题最好给点悬赏分。
参考技术B 需要你进行格式化一下:
String parten = "#.##";
DecimalFormat decimal = new DecimalFormat(parten);
String str= decimal.format(你要格式化的东西);本回答被提问者采纳
参考技术C 比如:

float a = (float)1.123;
DecimalFormat decimal = new DecimalFormat("#.##");
String result = decimal.format(""+a);

这样result就等于1.12了
参考技术D BigDecimal bd = new BigDecimal(0.7553f);
bd = bd.round(new MathContext(2));
System.out.println(bd);
---------------------------------------
注:
java.math.BigDecimal(float value)
java.math.MathContext(int precision)
BigDecimal.round(MathContext): BigDecimal
明白了吧?
另外引申一句:所有的数值处理都在java.math包中,所有的文本格式处理都在java.text包中,如果你希望输入保留两位小数的文本也可以用java.text包中的DecimalFormat类来处理。不过它返回的是字符串。

以上是关于java里如何在输出浮点数小数部分为0时自动将小数点和小数部分隐藏的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程中怎么自动去掉浮点数小数点后没用的0。

用c语言浮点输出时,如何让小数点后没用的0不显示。

怎么精确提取一个浮点数的小数部分?

C语言如何实现输出浮点数小数点两位(四舍五入法),但若小数点最后位为零则舍去??

Django模板:输出所有小数位的浮点数

C语言中如何对浮点数进行四舍五入?