千家信息网

如何进行Java Float保留小数位精度的实现

发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,如何进行Java Float保留小数位精度的实现,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Float 保留小数位精度Decima
千家信息网最后更新 2025年11月12日如何进行Java Float保留小数位精度的实现

如何进行Java Float保留小数位精度的实现,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Float 保留小数位精度

DecimalFormat decimalFormat=new DecimalFormat(".00");return Float.valueOf(super.getDecimalFormat().format(new BigDecimal(handleTime)));

Float 浮点型数据保留两位小数

用过两种方法:DecimalFormat和Math.round()。

用法:

1、DecimalFormat

String java.text.NumberFormat.format(double number)方法

float f = 0.5555f;DecimalFormat df1 = new DecimalFormat("#.00");//保留两位小数,如果是零点几,则小数点前的0不显示,小数点后几个零就保留几位df1.format(f);#表示该位如果是0则不必显示出来,0则表示该位如果是0仍然显示;

函数的定义是:;

所以,传参是double,也可以传float(隐式转换),最后的结果是String类型。

2、Math.round():

int java.lang.Math.round(float a)方法

float f = 1.222f;f = Math.round(f * 100) / 100f;//乘以100,然后除以100转换为浮点类型/**乘以多少就保留多少位小数**注意Math.round()方法传float类型!*/

两种方法都会四舍五入。

如果是浮点类型建议用Math.round方法,也可以根据自己需求diy代码。

详细讲解请看代码注释和控制台输出:(包含decimalFloat的格式、Math.round函数的实现逻辑)

package testMap; import java.text.DecimalFormat; public class TestFloat {         public static void main(String[] args) {                // TODO Auto-generated method stub                //四舍五入保留两位                float f = 0.5555f;                //decimalFormat是将double类型数据转换为字符串,并进行格式化                //#表示这位如果是0则不必显示出来,0则表示这位如果是                //format函数:String java.text.NumberFormat.format(double number)                DecimalFormat df1 = new DecimalFormat("#.00");//首位0不显示出来,即0.1显示为  .1                DecimalFormat df2 = new DecimalFormat("0.00");//首位0显示出来,即0.1显示为 0.1                System.out.println("--------DecimalFormat----------");                System.out.println("df1==" + df1.format(f));                System.out.println("df2==" + df2.format(f));                 System.out.println(df1.format(f).getClass());//String类型                System.out.println(Float.parseFloat(df1.format(f)));//转换为float类型                System.out.println(String.valueOf(df1.format(f)));//              System.out.println(Float.toString(df1.format(f)));//转换为String类型                                f = 0.595f;                //Math.round()方法是将浮点类型数据 乘以10的多少次方 ,取整,然后 + 0.5 除以10的多少次方,取小数点后多少位//              如乘以1000 则取小数点后3位                System.out.println("---------Math.round()----------");                System.out.println(Math.round(f * 100) / 100f);//四舍五入后如果末尾是0,自动省略,不显示                //              System.out.println(df1.format("1.2"));//参数必须是数值型String java.text.NumberFormat.format(double number)                System.out.println(Float.toString(f));//转换为String输出效果                System.out.println(Float.toString(f));//转换为String输出效果                                                System.out.println("-----------Math.round()的正数非特殊值实现逻辑--------------");                f = 11.115111f;                int b = (int) (f * 100 + 0.5);                float a = b / 100f;                System.out.println("a==" + a);                System.out.println((int)(f * 100 + 0.5) / 100f);                                f = -12.115f;                System.out.println("负数" + Math.round(f * 100) / 100f);                f = -12.116f;                System.out.println("负数" + Math.round(f * 100) / 100f);                                          System.out.println("-------Math.round()的负数非特殊值实现逻辑--------");                int c = (int) (f * 100 - 0.5);                float d = c / 100f;                System.out.println("d==" + d);                System.out.println((int)(d * 100 - 0.5) / 100f);        } }

控制台输出:

截图如下:

----下面的是控制台输出-----(和上面一样的,怕图片丢失)

--------DecimalFormat----------
df1==.56
df2==0.56
class java.lang.String
0.56
.56
---------Math.round()----------
0.6
0.595
0.595
-----------Math.round()的正数非特殊值实现逻辑--------------
a==11.12
11.12
负数-12.11
负数-12.12
-------Math.round()的负数非特殊值实现逻辑--------
d==-12.12
-12.12

顺便贴上NumberFormat.formart()的代码:

/**     * Specialization of format.     *     * @param number the double number to format     * @return the formatted String     * @exception        ArithmeticException if rounding is needed with rounding     *                   mode being set to RoundingMode.UNNECESSARY     * @see java.text.Format#format     */    public final String format(double number) {        // Use fast-path for double result if that works        String result = fastFormat(number);        if (result != null)            return result;         return format(number, new StringBuffer(),                      DontCareFieldPosition.INSTANCE).toString();    }

关于如何进行Java Float保留小数位精度的实现问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

小数 类型 方法 负数 逻辑 输出 特殊 小数点 浮点 小数位 精度 四舍五入 代码 函数 控制台 数据 问题 四舍 控制 效果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 凤凰网络安全工程师 网络安全与云计算的关系 宁波软件开发驻场收费标准 电机学课件软件开发 山大网络安全在四川就业 黑龙江便民平台软件开发电话 怎样验证备份数据库是不是有效 手机软件开发元都要会啥 帝国神话创建服务器多少内存 arcgis数据库多用户编辑 如何在sql数据库修改 计算机网络安全研究 方正电脑软件开发 海康平台服务器安全证书过期 安徽企业管理软件开发报价 服务器监控软件排名 3kw服务器机柜标准尺寸 白血病数据库建立 数据库更改默认值 盐田小程序软件开发 开启管理员身份启动服务器 如何理解网络安全素养 客户端无法访问服务器原因及方法 网络安全和思想政治教育 哈曼软件开发面试 电话软件开发公司电话 新吴区微型软件开发诚信经营 什么情况下需要用到服务器和存储 上海服务器机柜非标订制机柜 网络安全运维厂家
0