前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >float在Java中使用的坑

float在Java中使用的坑

作者头像
砖业洋__
发布2023-05-06 20:25:08
1070
发布2023-05-06 20:25:08
举报
文章被收录于专栏:博客迁移同步博客迁移同步

floatjava中打印用科学技术法表示 可以打印小数点后8位小数,但是准确表示的只有小数点后6位

代码语言:javascript
复制
public class Test {
    public static void main(String[] args) {
        float f1 = 412345678f;
        float f2 = 4123456789f;
        System.out.println(f1);
        System.out.println(f2);
    }
}

打印结果 4.12345664E8 4.12345677E9

可以看出,在科学技术法中,只有小数点后6位是准确的 至于为什么后两位表示不准确差异这么大,因为数字在计算机中用二进制存储,而有些小数无法用有限长度的二进制表示。

代码语言:javascript
复制
public class Test {
    public static void main(String[] args) {
        float f = 41234567f;
        System.out.println(f + 1 == f);
        System.out.println(f + 2 == f);
        System.out.println(f + 3 == f);
    }
}

打印结果 true true false

这说明,至少影响了科学技术法中小数点后第六位的时候,才会判别两个float数字之间的差别。这里f+1f+2都没有产生进位,没有影响小数点后第6位,f+3进位,影响了科学技术法小数点后第六位,所以才识别出差异。

一般不要使用float,除非特殊场景需要,一般用double,银行金额计算用BigDecimal

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档