zoukankan      html  css  js  c++  java
  • Java及Javascript中的浮点运算

    在进行金额计算,及某些精确计算时,会出现意想不到的很多小数的情况。

    • 对Java

      采用BigDecimal,如下代码示例

    package number;
    
    import java.math.BigDecimal;
    
    public class NumberTest {
     
      public static void main(String[] args){
     
        double a =  2.05d;
        BigDecimal c = new BigDecimal(a);
        System.out.println("using double--");
        System.out.println("a * 100 = " + a + " * 100 = " + a*100);
        System.out.println("using BigDecimal--");
        BigDecimal m = new BigDecimal("2.05").multiply(new BigDecimal(100)); //<-- please use this.
        System.out.println("a * 100 = " + a + " * 100 = " + m);
        
        BigDecimal n = new BigDecimal(2.05d).multiply(new BigDecimal(100));
        System.out.println("a * 100 = " + a + " * 100 = " + n);
    
      }
    
    }

    上面程序输出的结果为:

    using double--
    a * 100 = 2.05 * 100 = 204.99999999999997
    using BigDecimal--
    a * 100 = 2.05 * 100 = 205.00  
    a * 100 = 2.05 * 100 = 204.99999999999998223643160599749535322189331054687500
    • Javascript

    使用parseFloat函数和toFixed或toPrecision(12)函数。

    var c=3.4-3;
    
    console.log(c);  // 结果为:0.3999999999999999
    
    console.log(parseFloat(c).toPrecision(12));   //结果为:0.400000000000
    console.log(parseFloat(c).toFixed(1)); //结果为:0.4
    console.log(parseFloat(c).toPrecision(12).replace(/.?0+$/,'')); //结果为0.4

    //当然也可以将format数字之后的字符串再转化为Number, 然后再输出toString(),尾巴上的0也可以去掉了。

    //Jquery 有Number插件也可以做到上面。如果你不嫌增加更多的依赖的话。

  • 相关阅读:
    ServU和win2003防火墙的设置
    面试题02.05 链表求和
    【每日一题】LeetCode1. 两数之和
    【每日一题】Leetcode50. Pow(x,n)
    ASP连接查询access和sqlserver的代码
    各种播放器(视频点播)代码大全 
    电脑操作最忌讳的小动作
    网络小知识
    C#、Java比较
    10年互联网十大失败案例
  • 原文地址:https://www.cnblogs.com/bjfarmer/p/11834588.html
Copyright © 2011-2022 走看看