文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-25 21:44

关注

如何进行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方法,也可以根据自己需求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显示为  .1DecimalFormat df2 = new DecimalFormat("0.00");//首位0显示出来,即0.1显示为 0.1System.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);} }

控制台输出:

截图如下:

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

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

--------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()的代码:

    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保留小数位精度的实现问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯