当前位置:首页 > 开发 > 编程语言 > Java > 正文

java中float和double的问题

发表于: 2014-03-17   作者:daniel0202   来源:转载   浏览次数:
摘要:         很多朋友都知道java中直接用float和double运算会有精度的问题,其本质的原因是计算机只认识二进制数,直接用二进制来表示带有小数的十进制,本来就是无法做到精确地,比如0.1转换成二进制位为: 0.1(十进制) = 0.0001100110011001100......(二进制)       &nbs

        很多朋友都知道java中直接用float和double运算会有精度的问题,其本质的原因是计算机只认识二进制数,直接用二进制来表示带有小数的十进制,本来就是无法做到精确地,比如0.1转换成二进制位为:

0.1(十进制) = 0.0001100110011001100......(二进制)

 

        所以在java中进行商业逻辑运算,还是要用BigDecimal,具体用法举例如下:

    public static double add(double v1,double v2){
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.add(b2).doubleValue();
    }

 

java中float和double的问题

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
总结: 1、float 、 double 、 decimal :要注意精度损失的问题; 2、decimal 与 float 、 double
float浮动,在css中一个相当重要的属性功能,其可以用来创建多列网页布局、由无序列表创建导航工具
转:float和double在的存储方式 作者: jillzhang 联系方式:jillzhang@126.com C语言和C#语言中,
#include <stdio.h> int main() { float b = 0.58; int a; a = (int)(b * 100); printf("%f ,
#include <stdio.h> int main() { float b = 0.58; int a; a = (int)(b * 100); printf("%f ,
6 float
CSS中很多时候会用到浮动来布局,也就是经常见到的float:left或者float:right,简单点来说,前者是
我们知道 java 里面有个 BigDecimal ,可以解决我们的精度丢失问题。 但是很少关注其性能情况,因为
以上是报错信息: 首先是第一个出错地址:只是在文本框的值被改变后,把String转化成double类型。代
关于空白边叠加的问题,原来觉得很简单,现在发现完全不只书上写的几种情况,特别是元素浮动后,在I
意图 无论什么时候当临界区中的代码仅仅需要加锁一次,同时当其获取锁的时候必须是线程安全的,可以
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号