Java保留两位小数的方法

项目中有一个小需求,两个整数相除,结果需要保留两位小数,即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;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ACM算法日常

农夫与牛(STL-Queue、广度优先搜索)

现有一农夫和一母牛,假设农夫和母牛都站在一条数轴上,农夫开始的位置为N,母牛的位置为K。农夫有三种行动方式,每行动一次需要一秒钟时间,假设农夫的现在的位置为X,...

20330
来自专栏weixuqin 的专栏

leecode刷题(2)-- 买卖股票的最佳时机

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

11040
来自专栏AI科技大本营的专栏

中科创达孙力:不迷信AI算法,智能视觉如何转型升级?

近日,中科创达副总裁孙力在 Thunder World 2018 嵌入式 AI 人工智能技术大会上发表了主题演讲,主要分享了以下三方面内容:

10520
来自专栏祝威廉

MLSQL解决了什么问题

在谈MLSQL解决了什么问题之前,我们先提一个“数据中台”的概念。什么是数据中台呢?数据中台至少应该具备如下三个特点:

31220
来自专栏zhisheng

Java微基准测试框架JMH

JMH,即Java Microbenchmark Harness,这是专门用于进行代码的微基准测试的一套工具API。

17930
来自专栏AI科技大本营的专栏

这样学算法,包会包懂so easy~

面试前,大家都会开始刷各类网站,希望能在算法之道上有所进益,也期待有幸能在面试中碰上原题,而在那么多的网站中,LeetCode 一定是候选学习的网站之一。但是 ...

14120
来自专栏区块链入门

DAG的妙用(一)——记账新方法前言什么是DAG?基于DAG的交易模型

本文转载自公众号:[区块链中那些事儿] 作者:区块君的《DAG的妙用(一)——记账新方法》,已获授权。

15820
来自专栏微信公众号:Java团长

25道经典Java算法题(含代码)

来源:blog.csdn.net/YaoChung/article/details/80793691

45120
来自专栏移动开发面面观

KMP算法详解

KMP是字符串匹配的经典算法。其中包含的思想,是非常有趣的。本文作为KMP算法的介绍和备忘录。

24310
来自专栏finleyMa

5. Observable 和 数组的区别

Observable 和 数组都有filter, map 等运算操作operators,具体的区别是什么? 主要是两点:

12820

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励