首页 > 作文

Java Float 保留小数位精度的实现

更新时间:2023-04-04 02:03:37 阅读: 评论:0

目录
float 保留小数位精度float 浮点型数据保留两位小数1、decimalformat2、math电视剧国防生全集.round():

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显示为  .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.o一口酥ut.println(float.parfloat(df1.format(f)));//转换为float类型system.out.println(string.valueof(what和howdf1.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 t to roundingmode.unnecessary     * @e java.text.format#format     */    public final string format(double number) {        // u 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();    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。

本文发布于:2023-04-04 02:03:35,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/154dcffaabd2e668bac60749dd696c42.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Java Float 保留小数位精度的实现.doc

本文 PDF 下载地址:Java Float 保留小数位精度的实现.pdf

下一篇:返回列表
标签:负数   类型   浮点   转换为
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图