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

  • 相关阅读:
    Android中的回调Callback
    vim编辑器配置及常用命令
    自定义View 和 ViewGroup
    BluetoothClass详解
    BluetoothServerSocket详解
    NSData转换成NSDictionary
    SDWebImage缓存图片的机制(转)
    非ARC和ARC下创建单利模式的宏定义,可以直接套用
    详细例子构建自定义cell
    使用FMDB框架来加载数据库
  • 原文地址:https://www.cnblogs.com/bjfarmer/p/11834588.html
Copyright © 2011-2022 走看看