首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    1.10乘100为什么不等于110

    要从今天的微信支付调试说起,众所周知微信支付的接口,要求传入的金额数值是按分为单位的,所以都必须是大于0的整数。   所以我们一般业务的实际金额都要做乘以100的处理,例如某大妈刚在市场买了1.10元的菜,她摸了摸口袋,看了一眼诚实憨厚的大叔,已经麻利地帮她打包好菜,实在不忍心说出自己今天忘记带钱包。   大叔正打算把菜递给大妈之际,看到大妈尾头紧皱,已经失去平时要把1.10元的菜讲价到1.00元的风韵神采,便意识到事情并不简单,便默默从下方抽屉中抽出一个微信二维码递给她。   大妈心中暗喜,迅速拔出他儿子刚为她买的最新款红米手机,熟练地扫过二维码,也没有要讲价到1.00元的意思了,麻利地在微信上输入1.10元的金额,点击立即支付,输入过密码。。。   “参数错误:你输入的金额格式不正确”,看着手机弹出的提示弹窗,大妈狠狠咬了牙,又重复了一遍上述的支付动作,“参数错误:你输入的金额格式不正确”。这时大妈崩溃的用着恳求可怜的眼神看着大叔,大叔也一面无奈地轻轻将打包好的菜微微收了过来一下,空气突然安静地凝固起来。

    01

    JavaScript中科学计数法的问题

    JavaScript 中经常会碰到数值计算问题,偶尔会在不经意间报一个不是bug的bug。今天来说说一个特殊的例子。我以0.0011BTC 价格买入 0.0002CZR 计算出了的金额是 0.00000022BTC,而 JavaScript 计算出来的金额是 2.2e-7 。值是对的,只是用了科学计数法,也是数值类型。但是问题来了,一般用户用户看不懂 2.2e-7,那么就把它转换成 0.00000022 吧。然而问题了,我用尽办法,怎么样都无法将 2.2e-7 转换成直观的 0.00000022。或许你会嘲笑我,告诉我直接用 .toFixed() 方法。但是新问题又来了, .toFixed() 会保留足够的小数位,比如:2e-7.toFixed(8) 得到的值是 0.00000020,2e2.toFixed(8)得到的值是 200.00000000。最后的 0 让我感到多余…

    06
    领券