首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript nodejs舍入错误

问javascript nodejs舍入错误
EN

Stack Overflow用户
提问于 2014-04-09 11:06:03
回答 1查看 1.6K关注 0票数 0

我希望每件事都准确、精确地加起来,我不能让总数少一分钱。

代码语言:javascript
复制
var buy_amount = 132.32000000;                      //amount in bitcoin
var buy_amount_satoshi = buy_amount*100000000;      //amount in satoshi
var sell_rate = 10.00000000;                        //USD rate
var spend_usd = buy_amount_satoshi*sell_rate;   //total USD
var spend_display = spend_usd/100000000;        //total USD user display

console.log(spend_usd.toFixed(8));              //132320000000.00000000
console.log(spend_display.toFixed(8));              //1323.20000000

jsfiddle.net/XjLLS/

  1. 用100000000乘以这个数字就可以得到no。萨托西斯- 正确的货币处理
  2. 将金额乘以比率。
  3. 将8位小数添加到结果中

我做得对吗?我很感激你的帮助!

更新:--我现在正在使用bigdecimal.js库,并编写了以下代码片段:

代码语言:javascript
复制
var bigdecimal = require("bigdecimal");

var mode = bigdecimal.RoundingMode.HALF_EVEN(); //default: DOWN
var satoshi = new bigdecimal.BigDecimal("100000000");

var buy_amount = new bigdecimal.BigDecimal("132.32000000"); //amount in bicoin
var amount_minor = buy_amount.multiply(satoshi); //amount in satoshi
var sell_rate = new bigdecimal.BigDecimal("10.00000000"); //sell rate usd
var spend_minor = amount_minor.multiply(sell_rate);
var user_spend = spend_minor.divide(satoshi, 8, mode); //total usd user must spend
var user_display = user_spend.toString();
console.log(user_display);

jsfiddle.net/wwpWA/

默认的舍入模式是向下的,但我将其设置为HALF_EVEN,也就是银行家的四舍五入(银行家的四舍五入在使用货币时很常见)

我希望所有四舍五入的错误现在都消失了!如果我错了,请纠正我!

EN

回答 1

Stack Overflow用户

发布于 2014-04-09 11:12:58

尝尝这个

代码语言:javascript
复制
var buy_amount = 132.32000000;                     
var buy_amount_satoshi = (parseFloat(buy_amount)*100000000).toFixed(8);     
var sell_rate = 10.00000000;                        
var spend_satoshi = (parseFloat(buy_amount_satoshi)*parseFloat(sell_rate)).toFixed(8);   
var spend_display = (parseFloat(spend_satoshi)/100000000).toFixed(8);  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22960627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档