关于float中0.3一类数据的运算解决办法

转载 2017年09月28日 20:15:50

原因是此类数据无法用二进制完整表示,完全是无限循环数据。

运算结果解决办法:

方法一:使用github上的库:BigDecimal.jsbignumber.js

方法二:在这篇文章里面找到一个简单的函数。

}

可以将每次的运算结果赋值给它,从而得到比较精确的结果。·

方法三:使用简单点四舍五入方法,其实跟上面的方法差不多,只不过取了一个10位小数。

function numTofixed(num) {
    if (typeof num == 'number') {
        num = parseFloat(num.toFixed(10))
    }
    return num;
}
numTofixed(0.1 + 0.2);

方法二的正则表达式解读:·

//code from http://caibaojian.com/float-point-math.html
match=str.match(/\.(\d*?)(9|0)\2{5,}(\d{1,5})$/);
  • match()·

  • 在字符串内检索指定的值,找到一个或多个正则表达式的匹配
  • stringObject.match(searchvalue)
  • stringObject.match(regexp)
  • 返回匹配结果的数组,数组内容依赖于regexp是否具有全局标志g。

例如下面这个

var d = '55 ff 33 hh 77 tt'.match(/\d+/g); // d = ["55", "33", "77"]
再看一下表达式里面有一个\2{5,},这个\2表示跟第二个表达式匹配,即跟(9|0)这个相同。涉及到子表达式和捕获,反向引用的概念
  • 一个子表达式是一个整体,可重复后面引用
  • /(\d)(\d)\2\1/gi; 第二位和第三位相同,第一位和第四位相同
  • /(\d)\1(\d)\2(\d)\3(\d)4/; aabbccdd形式的数字
  • /(\d){5}-(\d)\2\2(\d)\3\3(\d)\4\4/gi; 12345-111222333

假如我们使用·

fixFloatCalcRudely(0.1+0.2) //[".30000000000000004", "3", "0", "4"]

由于没有加全局,所以会输出全部结果,第一个元素匹配整个字符串,第二个开始与圆括号内的子表达式相匹配的子串结果。由于我们输出只有0.3后面都是0,进入无限循环。

相关文章推荐

当外部div没有设置高度 或者内部div float之后 边框 内外边距等不起作用的解决办法

在外部的div的style中添加 overflow:hidden;  对overflow:hidden的详细理解: overflow:hidden这个CSS样式是大家常用到的CSS样式,但...

自定义objc_msgSend,与如果为参数为float的解决办法

问题: I want to add scripting support for an Objective-C project using the objc runtime. Now...

IE float浮动 子元素不能撑开父容器 解决办法

IE float浮动 子元素不能撑开父容器 解决办法 #box{ background:#666; width:200px; } .obox{ background:#FF0000; wid...

css样式float造成的浮动“塌陷”问题的解决办法

什么是CSS Float? 定义: float 属性定义元素浮动到左侧或右侧。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级元素,而不...

Float引起div自适应高度无效的解决办法

Float引起div自适应高度无效的解决办法。 一、当子元素在正常的文档流中时 三生草 #ss{ border:2px solid yellow; width:400px...

div设置float后下一个div要换行的解决办法

div设置float之后,如果没有清除,则下一个被设置float的div会根据上一个float的div的布局进行排版;而下一个没设置float属性的div则是根据它的前一个元素进行排版。 要清除flo...

css样式float造成的浮动“塌陷”问题的解决办法

什么是CSS Float?定义: float 属性定义元素浮动到左侧或右侧。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级元素,而不论它...

iOS中NSString转float失真问题的解决办法

直接打印[@"21.2" floatValue],得到的结果是 ———————————————————————————— ———————————————————————————— 百...

关于布局中float的常见问题及解决办法

在网页的布局中,我们经常要使用到float在进行元素的排版,那么随之而来的就是许多的问题,个人在开发过程中最常见的问题主要就是两种,一种是元素的浮动导致的布局混乱的问题,另一种是浮动后的盒子模型塌陷问...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)