为啥js计算999999*99.99会计算错呢
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥js计算999999*99.99会计算错呢相关的知识,希望对你有一定的参考价值。
为什么计算的值为99999899990000,并没有用toFixed函数,这个误差怎么来的,其他数据即使计算的值不是正确的,但在保留几位有效数字后起码显示的还是正确的值,求解释
参考技术A 十进制数字 0.5,用二进制表示为 0.1可以理解为 0*2^0+1*(2^-1) = 0.5
十进制数字 0.25,用二进制表示为 0.01
可以理解为 0*2^0+0*(2^-1)+1*(2^-2) = 0.25
十进制数字 0.75,用二进制表示为 0.11
可以理解为 0*2^0+1*(2^-1)+1*(2^-2) = 0.75
好了,问题来了 怎么表示一个 介于 0.25~0.5 之间的数?
除不尽吧?无理数吧?对了,这就是浮点数不是刚刚好等于一个十进制浮点数的原因追问
讲的很好关键是现在不是99999899990000.00999.........几,这不科学还是没解决问题
追答num = Math.round(num*100)/100;
做一下舍入,保留两位小数
大哥是我表达有问题还是你回答错模块了,请看清楚在回答可以么?或者麻烦自己写个程序输出一下看看值再说好么?不要老是拿理论哪有套,有事实并非如此,可以实践后再说么?
追答呵呵
参考技术B 计算结果为99989900.00999999追问并不是你说的值如果是的话保留两位小数就对了,关键现在不是,你可以自己写程序弹出看看再说啊
追答我去输错了是999999*999999999.99保留两位小数他就会丢失0.01结果是999998999990000.00为什么999998999990000.01没道理
为啥从计算切换到方法时,以下 Vue.js 代码不起作用?
【中文标题】为啥从计算切换到方法时,以下 Vue.js 代码不起作用?【英文标题】:Why does the following Vue.js code not work when switching from computed to methods?为什么从计算切换到方法时,以下 Vue.js 代码不起作用? 【发布时间】:2019-03-29 15:13:39 【问题描述】:在以下代码中:
https://jsfiddle.net/willywg/2g7m5qy5/
根据复选框的状态禁用按钮。
但是当我改变时:
computed:
isDisabled: function()
return !this.terms;
到
methods:
isDisabled: function()
return !this.terms;
启用/禁用不再起作用。
这是为什么?
根据文档:
https://vuejs.org/v2/guide/computed.html
在这个例子中两者的工作方式不应该相同吗?
【问题讨论】:
因为计算是反应性的,方法不是。如果在这种情况下使用方法,则每次检查/取消检查输入时都需要调用该方法。 【参考方案1】:计算属性会查找更改,但需要使用 @change 或 @click 之类的方式调用方法。在这种情况下,您实际上可以只绑定您的数据对象而无需任何一个。
<div id="app">
<p>
<label for='terms'>
<input id='terms' type='checkbox' v-model='terms' /> I accept terms!!!
</label>
</p>
<button :disabled='!terms'>Send Form</button>
</div>
new Vue(
el: '#app',
data:
terms: false
)
【讨论】:
【参考方案2】:计算和方法是两个不同的东西
方法:当你想做某事时调用,比如调用一个动作/突变或做一些除了处理存储/状态之外的事情
computed:你可以使用返回值来绑定模板html中的东西,一些变化的值会根据一些计算而变化。如果它不会改变,那么只需将其绑定到日期/状态
在您当前的脚本中计算定位 isDisabled
数据一直在变化。
因此,每当您的数据更改其功能时,都会自动触发。
但是,如果您希望在方法中使用此功能,则应手动触发该功能。 示例:
<input id='terms' type='checkbox' v-model='terms' @change="isDisabled" /> I accept terms!!!
当它发生变化时,它会调用 isDisabled 方法。
更多详情Methods vs Computed
。谢谢
【讨论】:
以上是关于为啥js计算999999*99.99会计算错呢的主要内容,如果未能解决你的问题,请参考以下文章