项目中有一个小需求,两个整数相除,结果需要保留两位小数,即1.00、0.50这种数据格式。

以下做法不行,因为两整数相除,小数点以后的数字会被截断,让运算结果为整数类型,

int x = 10;
int y = 20;
int a = x/y;

System.out.println(a);

// 输出0

System.out.println(x/y);

// 输出0

System.out.println((float)(x/y));

// 输出0.0

此时需要运算结果为浮点数,则此时必须将两整数其一或是全部强制转换类型为浮点数,

float b = (float)x/y;
float c = x/(float)y;
float d = (float)x/(float)y;

System.out.println(b);

// 输出0.5

System.out.println(c);

// 输出0.5

System.out.println(d);

// 输出0.5

为了控制保留两位小数,需要进行格式化,

DecimalFormat df = new DecimalFormat("0.00");

String e = df.format(b); // 此处可以用上面b/c/d任意一种

System.out.println(e);

// 输出0.50

String e = df.format(a);

System.out.println(e);

// 输出0.00,由于a是int类型值,格式化之前x/y已经为整数0,因此此处只增加两位小数0

网上有一种写法,用了如下方法,他的含义是四舍五入,保留两位小数,但需要小数有值,

double a = new BigDecimal((float)10/20).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();  
System.out.println(a);

// 输出0.5

double b = new BigDecimal((float)1/3).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();  
System.out.println(f);

// 输出0.33

另外,float是单精度类型,精度是8位有效数字,内存分配4个字节,占32位,取值范围是10的-38次方到10的38次方,有效小数位6-7位。

对应double是双精度类型,精度是17位有效数字,取值范围是10的-308次方到10的308次方,double占用8个字节的存储空间。

默认小数都用double来表示,所以如果要用float的话,则应该在其后加上f,例如这么声明,

float z=1.3;

会报错误

Type mismatch: cannot convert from double to float

需要改为,

float z=1.3f;

Java保留两位小数的方法相关推荐

  1. java 乘法保留两位小数,Java保留两位小数的方法

    项目中有一个小需求,两个整数相除,结果需要保留两位小数,即1.00.0.50这种数据格式. 以下做法不行,因为两整数相除,小数点以后的数字会被截断,让运算结果为整数类型, int x = 10; in ...

  2. java 不四舍五入 保留,java保留两位小数(不四舍五入)

    这篇文章主要介绍了java使double类型保留两位小数的方法,大家参考使用吧 复制代码 代码如下: mport java.text.DecimalFormat; DecimalFormat    d ...

  3. java保留两位小数_java使double保留两位小数的多方法 java保留两位小数

    这篇文章主要介绍了java使double类型保留两位小数的方法,大家参考使用吧 mport java.text.DecimalFormat; DecimalFormat df = new Decima ...

  4. java保留两位小数怎么_java保留两位小数4种方法

    java保留两位小数4种方法 Java中保留小数有四种方法,如下: public class Format { double f = 23065.57845; public void m1() { B ...

  5. java double 保留小数_java使double类型保留两位小数的方法

    java使double类型保留两位小数的方法 本文是百分网小编整理的主要介绍关于java使double类型保留两位小数的方法,有需要的朋友们一起看看吧!想了解更多相关信息请持续关注我们应届毕业生考试网 ...

  6. java最多保留两位小数_java使double保留两位小数的多方法 java保留两位小数

    这篇文章主要介绍了java使double类型保留两位小数的方法,大家参考使用吧mport java.text.DecimalFormat; DecimalFormat    df   = new De ...

  7. java保留两位小数4种方法,java保留两位小数4种方法,java两位小数4种

    java保留两位小数4种方法,java两位小数4种 java保留两位小数4种方法 方法一:String的format方法(推荐) double f = 111231.5585; System.out. ...

  8. java中想要保留2位小数_java使double保留两位小数的多方法 java保留两位小数

    mport java.text.DecimalFormat; DecimalFormat    df   = new DecimalFormat("######0.00"); do ...

  9. java保留二位小数_java使double保留两位小数的多方法 java保留两位小数

    复制代码代码如下: mport java.text.DecimalFormat; DecimalFormat    df   = new DecimalFormat("######0.00& ...

最新文章

  1. Android调用浏览器打开网址遇到的问题
  2. 交换机自动学习vlan
  3. mysql索引检测_mysql检测重复索引
  4. linux应用之----进程控制理论
  5. redis java序列化_java处理redis的几种序列化策略
  6. springCloud - 第7篇 - 配置文件管理中心 ( SpringCloud Config )
  7. 在wp7中读取XML的配置文件,Content与Resource的区别
  8. Oracle用rowid删除同一张表的重复记录
  9. 机器学习应用量化投资没啥用?那是你方法不对!
  10. html5 中国地图统计图,html5 echarts中国地图网络销售分布图表代码
  11. java解析xml方法_详解Java解析XML的四种方法
  12. VS 2017安装教程
  13. 基于微信小程序的实验室管理系统 文档+云开发项目源码及云数据库+部署说明
  14. php addslash,php addslashes用法详解
  15. 亲自用鸿蒙跑了个“hello world”!跑通后,我特么开始怀疑人生....
  16. 计算机ABC分类法的步骤,ABC分类法的具体步骤
  17. zookeeper(1)
  18. Dreamweaver CS 5 快捷键大全
  19. C语言中abs()函数和fabs()函数以及fabsf()函数的区别
  20. ESIM(Enhanced Sequential Inference Model)- 模型详解

热门文章

  1. Axure RP9基本操作
  2. 多大的带宽才叫大带宽服务器,大带宽服务器有什么优势。
  3. Nodejs的安全学习
  4. php tps,tps是啥
  5. 致创业新人,我网络创业的一些心得。
  6. 米尔基于ARM架构核心板的国产化EtherCAT主站控制器解决方案
  7. Android 跳转外部浏览器坑
  8. Spring整合Kafka
  9. 多线程(一)——委托与多线程
  10. 多线程--何时用到多线程