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插件也可以做到上面。如果你不嫌增加更多的依赖的话。

  • 相关阅读:
    工作笔记(一)
    如何修改mindmanager默认字体为微软雅黑
    彻底解决zend studio 下 assignment in condition警告
    PHP5.2至5.6的新增功能详解
    ThinkPHP中的模型命名
    12大网站建设技巧 让访客信任你
    CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14
    几种不错的编程字体
    大型网站的灵魂——性能
    MySQL: InnoDB 还是 MyISAM?
  • 原文地址:https://www.cnblogs.com/bjfarmer/p/11834588.html
Copyright © 2011-2022 走看看