1. 程式人生 > >js處理浮點數的加減乘除

js處理浮點數的加減乘除

//浮點數加法運算
function FloatAdd(arg1,arg2){
    var r1,r2,m;
    try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
    try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
    m=Math.pow(10,Math.max(r1,r2));
    return (arg1*m+arg2*m)/m;
}

//浮點數減法運算
function FloatSub(arg1,arg2){
    var r1,r2,m,n;
    try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
    try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
    m=Math.pow(10,Math.max(r1,r2));
    //動態控制精度長度
    n=(r1=r2)?r1:r2;
    return ((arg1*m-arg2*m)/m).toFixed(n);
}

//浮點數乘法運算
function FloatMul(arg1,arg2)
{
    var m=0,s1=arg1.toString(),s2=arg2.toString();
    try{m+=s1.split(".")[1].length}catch(e){}
    try{m+=s2.split(".")[1].length}catch(e){}
    return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
}


 //浮點數除法運算
function FloatDiv(arg1,arg2){
    var t1=0,t2=0,r1,r2;
    try{t1=arg1.toString().split(".")[1].length}catch(e){}
    try{t2=arg2.toString().split(".")[1].length}catch(e){}
    with(Math){
        r1=Number(arg1.toString().replace(".",""));
        r2=Number(arg2.toString().replace(".",""));
        return (r1/r2)*pow(10,t2-t1);
    }
}

轉載自:點選開啟連結

相關推薦

php點數乘除bug

計算 分享圖片 span ont 表示 無法 運算 金額 ima 項目測試階段,少部分微信支付成功,但是在異步通知校對訂單金額是否一致時,一直被認定訂單金額不一致。 類似於: 瀏覽器輸出: 分析: 因為計算機二進制無法準確表示部分浮點數(如2.03、0.58等等),在對

js處理點數乘除

//浮點數加法運算 function FloatAdd(arg1,arg2){ var r1,r2,m; try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0} try{r2=arg2.t

JS 乘除運算

動態控制 pan nbsp lac cnblogs oat 浮點 spa log //浮點數加法運算 function FloatAdd(arg1,arg2){ var r1,r2,m; try{r1=arg1.toString(

Js BigDecimal實現精確乘除運算的方法

func num 精確 pre fix 加減乘 結果 返回值 try 加法函數,用來得到精確的加法結果function accAdd(arg1, arg2) {var r1, r2, m, c;try {r1 = arg1.toString().split(".&

js處理點數計算誤差

眾所周知,浮點計算會產生舍入誤差的問題,比如,0.1+0.2,結果應該是0.3,但是計算的結果並不是如此,而是0.30000000000000004,這是使用基於IEEE754數值的浮點計算的通病,js並非獨此一家,今天我們就來看看js怎麼解決這個誤差的。 以下是針對加減乘除的解決方法: 加法: functi

點數運算中左規右規問題

當尾數用二進位制表示時,浮點規格化的定義是尾數M應滿足:                             1/2   ≤  |M|<1 顯然對於正數而言,有M = 00.1φφ…φ;對於負數,其補碼形式為11.0φφ…φ(即-0.0*******,左歸)。這

點數運算

浮點運算要把階碼和尾數分別處理。 階碼的運算是定點整數運算,對階碼的運算四種:階碼加1,階碼減1,兩階碼求和,兩階碼求差。 尾數的運算是定點小數運算,運算過程中一般取雙符號位 浮點運算器總是由處理階碼和處理尾數的兩部分組成 浮點數的溢位(Overflow) 當一

計算機基礎——點數運算

•十進位制科學計數法的加法例子 1.123 × 10^5 + 2.560 ×10^ 其計算過程為: 1.123 ×10^5 + 2.560 ×10^2 = 1.123 ×10^5 + 0.002560 ×10^5           &n

js中float型別乘除運算精度問題

js裡邊取float數的精度的方法 toFixed() toFixed() 方法可把 Number 四捨五入為指定小數位數的數字。 toFixed() 裡面的數為 0- 20 之間的整數。 var a = 1.23456 a.toFixed(2) = 1.23 toFixed

JS中Float型別乘除

//浮點數加法運算 function FloatAdd(arg1,arg2){ var r1,r2,m; try{r1=arg1.toString().split(".")[1].le

計算機組成原理白學了,再次回顧點數

# 計算機中浮點數的表示 > 大二學的計算機組成原理,回顧下其中的知識 [toc] ## 一個加法引發的思考   上次在一個論壇裡看到了Java裡的一些不正常的操作,比如說0.05+0.01的結果居然不是等於0.06,截圖為證:(雖然說在學計算機組成原理的時候貌似也碰到過,但是那時並沒有深入研究

解決JS點數(小數)計算乘除的BUG

java 長度 誤差 spl function urn tofixed ccm catch 加法函數 /** ** 加法函數,用來得到精確的加法結果 ** 說明:javascript的加法結果會有誤差,在兩個浮點數相加的時候會比較明顯。這個函數返回較為精確的加法結果。

解決JS點數(小數)計算乘除的BUG-https://www.cnblogs.com/cynthia-wuqian/p/6432754.html

/****************************************解決JS浮點數(小數)計算加減乘除的BUG    Start****************************************/ /** ** 加法函式,用來得到精確的加法

Javascript優化後的乘除(解決js點數計算bug)

說明 眾所周知,js在計算浮點數時候,結果可能會不準確。比如:(在chrome中的運算結果) 2.2 + 2.1 = 4.300000000000001 2.2 - 1.9 = 0.30000000000000027 2.2 * 2.2 = 4.84

js 點數、乘、除。

[1] 控制 func 乘法 pla ring num max str 1.浮點數加法運算 function numAdd(arg1, arg2) { var r1, r2, m; try { r1 = arg1.t

由於Java的簡單型別不能夠精確的對點數進行運算,這個工具類提供精 確的點數運算,包括乘除和四捨五入

public class Arith { /** * 由於Java的簡單型別不能夠精確的對浮點數進行運算,這個工具類提供精 確的浮點數運算,包括加減乘除和四捨五入。 */ // 預設除法運算精度 private static final int DEF_DIV_SCALE = 10

大數計算(進階) 支援大點數的任意精度乘除

上一篇實現了大數加法,乘除法都是簡單的複用加法,這樣做時間複雜度高,精度低。進階:1.乘法模擬豎式計算方法 核心思路是num1[i]*num2[j]的結果一定對應乘積中的[i+j]位,並且考慮對[i+j+1]位的進位。    這樣的時間複雜度為O(m*n) 而簡單的複用加法的

Arith.java--點數運算 -- 由於Java的簡單型別不能夠精確的對點數進行運算,這個工具類提供精確的點數運算,包括乘除和四捨五入。

package com.boco.common.util; import java.math.BigDecimal; /** * 由於Java的簡單型別不能夠精確的對浮點數進行運算, <br>這個工具類提供精確的浮點數運算,包括加減乘除和四捨五入。 *

java處理點型別的乘除法出現小數點精度錯亂的解決方法

如果你在java裡面執行一下一段程式碼,你會發現會出現錯亂的小數點: double d1 = 100.0234; double d2 = 12.0652;

js實現兩個文本框數值的乘除運算

element tle utf-8 運算 tel 加減 value 加減乘除 tex <!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></