1. 程式人生 > >js中進行金額計算

js中進行金額計算

JavaScript提供了3個顯式的型別轉換函式,分別是eval()、parseInt()和parseFloat()。

eval()函式:將字串表示式轉換成數字值。例如,語句total=eval("432.1*10")的結果是total=4321即將數值4321賦予total變數。

parseInt()函式:把字串轉換成整數。返回是從字串的第一個字元開始,如果字元不是以整數開頭則返回0。parseInt()函式還可以轉換十六進位制數或十進位制數。

例如:parseInt("123xyz") 返回123,而parseInt("xyz")返回0。

parseFloat()函式:類似於parseInt()函式,它返回字串上包含的第一個浮點數。如果字串不以有效浮點數開頭,則返回0。

例如:parseFloat("2.1e4xyz")返回21000;而parseFloat("xyz")返回0。

JavaScript中parseFloat函式方法是返回由字串轉換得到的浮點數。 使用方法:

parseFloat(numString)其中numString 引數是包含浮點數的字串。JavaScript中parseFloat函式方法返回與 numString 中儲存的數相等的數字表示。如果 numString 的字首不能解釋為浮點數,則返回 NaN (而不是數字)。

parseFloat("abc") // 返回 NaN。 
parseFloat("1.2abc") // 返回 1.2。


在js中進行以元為單位進行金額計算時 使用parseFloat會產生精度問題
var price = 10.99;
var quantity = 7;
var needPay = parseFloat(price * quantity);

needPay的正確結果應該是76.93元  但是執行後發現needPay為76.93000000000001 
此情況可通過 toFixed(n)  方法修正 但是這個方法對 js版本要求較高 不能相容ie5

另一個解決方案是: 將元為單位的金額乘以100換算為分進行計算

var price = 10.99
var quantity = 7
var needPay = Math.floor(parseFloat(price*100 * quantity))/100;

parseFloat(price*100 * quantity)的計算結果是7693.000000000001   使用Math.round()方法四捨五入,再除100  即為正確的結果

Math.ceil() 是向上取整
Math.floor()是向下取整
Math.round()是四捨五入

第一種:四捨五入
Math.round(parseFloat("234432.9")-parseFloat"0.2")); 
第二種:保留幾位小數
num.toFixed(
2); toFixed(n)中的n代表保留幾位

第三種:擴大一定的倍數,對結果在縮小這個倍數
var num1=parseFloat("234432.9")*1000000000000;
var num2=parseFloat("0.2")*1000000000000;
var num3=(num1-num2)/1000000000000;
結果為 234432.7

相關推薦

js進行金額計算

JavaScript提供了3個顯式的型別轉換函式,分別是eval()、parseInt()和parseFloat()。 eval()函式:將字串表示式轉換成數字值。例如,語句total=eval("432.1*10")的結果是total=4321即將數值4321賦予t

[JS]在js進行正則替換顯示高亮處理,重復替換問題,可以使用js自帶的批量替換,則不會重復替換

數組組合 高亮顯示 log words reg his ucc div == //js高亮顯示 function highlight(){ if($.trim($(‘#pscws‘).val()) != ‘‘){ var url = $("#analys

js的小數計算精度問題,修正計算精度

js 的精度問題這個網上比較多,進行加減乘除運算也難免,常見的比如: 1)在控制檯 輸入:1.1+0.3 運算結果是:1.4000000000000001,根本原因也就是二進位制和十進位制轉換的問題,具體源由參考網上相關文章,有一種解決辦法:兩個數分別剩10的N次方最後再除10的N次方,比如:(

web3.jsestimateGas如何計算智慧合約消耗的gas量

我們可使用web3.js框架的estimateGas函式獲得一個以太坊智慧合約的Gas估計值 ,通過執行一個訊息呼叫或交易,該訊息呼叫或交易直接在節點的VM中執行,並未在區塊鏈中確認,函式會返回估算使用的gas量。函式呼叫:web3.eth.estimateGas(callO

js關於!+[]+[]如何進行計算

前幾天朋友問了我一個問題,(!+[]+[]).length 得什麼,我一時間還真沒反應過來,後來百度查了資料才知道了是如何計算的,控制檯輸入得到如下: 首先js是弱型別語言,所以導致js的隱式型別

Node.js的異步I/O是如何進行的?

ioc 而是 網絡 調用 發現 回調函數 異步調用 技術 如何 Node.js的異步I/O通過事件循環的方式實現。其中異步I/O又分磁盤I/O和網絡I/O。在磁盤I/O的調用中,當發起異步調用後,會將異步操作送進libuv提供的隊列中,然後返回。當磁盤I/O執行完成之後,會

在angular.js利用js代碼進行頁面刷新

fun r.js js代碼 http 調用函數 cti load ati cati 今天在完成angular項目的時候,需要用到頁面刷新功能,想想有點茫然,上網了找到一種在angular中很好用的方法: (1)先在控制器中註冊$window; (

java,js小數計算精度誤差問題

sys OS 時有 無限 小數 java sdn 符號位 ava   在碰見這個問題之前我完全沒有這個概念,碰見了特此記錄;   項目js裏面中用到了number*0.2(其中number是一個整數,我測試的時候是259),得到的結果卻是51.800000000000000

js計算問題算式結果拼接成字符串怎麽解決

類型 計算 rod -s parse checked ctc 解決 function 如題:經常遇到類似問題 一種;自定義的弱類型 var savNum=0; var num=$("#numU").val();//jsp頁面獲得得值 savNum=parseInt(savN

JS使用時間戳,獲取當前日期,計算前一週的日期~

今天專案中用到了一點 隨便記錄一下 function timestampToTime(timestamp) { var date = new Date(timestamp * 1000);//時間戳為10位需*1000,時間戳為13位的話不需乘1000 var Y =

在瀏覽器進行深度學習:TensorFlow.js (八)生成對抗網路 (GAN

Generative Adversarial Network 是深度學習中非常有趣的一種方法。GAN最早源自Ian Goodfellow的這篇論文。LeCun對GAN給出了極高的評價: “There are many interesting recent development in deep learni

如何使用Web3.js API 在頁面進行轉賬

寫在前面 閱讀本文前,你應該對以太坊、智慧合約、錢包的概念有所瞭解,如果你還不瞭解,建議你先看以太坊是什麼 除此之外,你最好還了解一些HTML及JavaScript知識。 轉賬UI 頁面的編寫 轉賬UI主體的介面如圖: 實現這個介面

通過sqoop將mysql資料匯入到hive進行計算示例

hive計算示例 先將資料通過sqoop從mysql匯入hive,在hive執行mysql的查詢語句,得到與mysql一樣的執行結果 步驟: mysql資料準備 account賬號表 detail收支資料表 CREATE TABLE

JS模擬表單的post提交,進行頁面的跳轉

封裝為Post(URL, PARAMTERS) 函式: /* *功能: 模擬form表單的提交 *引數: URL 跳轉地址 PARAMTERS 引數 */ function Post(URL

MySQL關於金額資料進行運算求和/整數時精度丟失/清空表資料,自增從1開始

關於MySQL的使用總結: 1.金額欄位型別為String時,進行求和運算 2.查詢DECIMAL型別資料小數點後精度缺失丟失為0的小數 3.清空表的資料,id自增從1開始的方法 1.金額欄位型別為String時,進行求和運算 之前

Vue.js計算屬性和方法的區別

在vue.js中,計算屬性和方法達到的效果是一樣的,但是計算屬性是基於依賴進行快取的,只有message發生改變才會導致reverseMessage發生改變,只要 message 還沒有發生改變,多次訪問 reversedMessage 計算屬性會立即返回之前的計算結果,而不

使用Web3.js API 在頁面進行轉賬

閱讀本文前,你應該對以太坊、智慧合約、錢包的概念有所瞭解,如果你還不瞭解,建議你先看以太坊是什麼除此之外,你最好還了解一些HTML及JavaScript知識。 轉賬UI 頁面的編寫 轉賬UI主體的介面如圖: 實現這個介面很簡單,這裡就不程式碼了。大家可以開啟Demo,右擊檢視頁面原始碼。

JS關於a+aa+aaa+aaaa的簡便計算方法

題目Sn=a+aa+aaa+aaaa....+n個a 這個題一個難點就是a的位數是變動的,第一項是一位,第二項是兩位,第三項是三位。 首先累加一定要是迴圈的,但是如何構造出每一項呢? 我大概

前端框架Vue(13)——vue 如何對公共css、 js 方法進行單檔案統一管理,全域性呼叫

1、前言 最近,為公司開發交付的一個後臺管理系統專案,我使用了 Vue 框架進行開發實踐。 模組化、元件化、工程化的開發體驗非常好。良好的 api,優雅的設計,對於工程師非常友好。 但是由於模組比較多,我對於每個模組分配了不同的

jsDate()的用法及日期計算方法

getDate() 從 Date 物件返回一個月中的某一天 (1 ~ 31)。 getDay() 從 Date 物件返回一週中的某一天 (0 ~ 6)。 getMonth() 從 Date 物件返回月份 (0 ~ 11)。 getFullYear() 從 Date 物件以四位數字返回年份。 getYear()