JS浮点计算问题
问题
用js进行浮点数计算,结果可能会“超出预期”,大部分计算结果还是对的,但是我们可不想在计算这么严谨的事情上还有意外的惊喜。比如:
0.3 + 0.6 = 0.8999999999999999
0.3 - 0.2 = 0.09999999999999998
0.3 * 1.5 = 0.44999999999999996
0.3 / 0.1 = 2.9999999999999996
看完这几个计算结果,如果你没用过js,你可能会有点崩溃。我只能说,这就是js的魅力所在。
分析
在这之前,你需要知道以下几点:
js中数字类型只有Number;
js的Number是IEEE 754标准的64-bits的双精度数值
网上有很多关于此问题的解释,由于计算机是用二进制来存储和处理数字,不能精确表示浮点数,而js中没有相应的封装类来处理浮点数运算,直接计算会导致运算精度丢失。其实高级语言(c#,java)也存在此问题,只不过它们自己内部做了处理,把这种精度差异给屏蔽掉了。有些小数转换为二进制位数是无穷的(有循环),但是64位中小数最多只有52位,因此对于位数超过的相当于被截取了,导致了精度的丢失。这个地址可以用来浮点数和IEEE 754标准的64-bits的互转(背后是二进制的转换),用这个我们来验证下0.3-0.2。
0.3转换后为0.299999999999999988897769753748
0.2转换后为0.200000000000000011102230246252
0.299999999999999988897769753748-0.200000000000000011102230246252=0.099999999999999977795539507496
这和js直接计算的结果0.09999999999999998想吻合。
分析下来,终于明白并不是js自身发育不良,只是没有及时补充营养,我们只能另想出路了。
以上是网上找的
我以前遇到过问题2中浏览器计算的结果 是两种,所以和浏览器也有问题
JS防水涂料是聚合物,JS防水涂料指聚合物水泥防水涂料,又称JS复合防水涂料。=
1、基面要求平整、牢固、干净、无明水、无渗漏、凹凸不平及裂缝处须 先找平,阴阳角应做成圆弧角。
2、准确配料:严格按配比要求进行配料,使 用时只需将粉料边搅拌边慢慢加入到对应液料中,并充分搅拌至均匀 细腻不含团粒的混合物。
3、涂覆要领:
用滚子或刷子涂覆,根据选定的工法的次序逐层完成;若涂料(尤其是打底料)有沉淀应随时搅拌均匀;涂覆要尽量均匀,不能局部沉积;各层之间的时间间隔以前一层涂膜干固不粘手为准;工法Ⅲ中的下涂层、无纺布层和中涂层必须连续施工。
4、保护层与装饰层施工
JS-I型保护层或装饰层施工须在防水层完工2天后进行,粘贴块材(如地板、瓷砖、马赛克等)时,将JS防水涂料按液料:粉料=1:2调成腻子状,即可用作胶粘剂。JS-II型可在面层施工同时贴保护层。
5、质量要求与工程检验
防水层施工完毕后,应认真检验整个工程的各个部分,特别是薄弱环节,发现问题及时修复,涂层不应有裂纹、翘边、鼓泡、分层等现象。
蓄水试验须等涂层完全干固后方可进行,一般情况下需48h以上,在特别潮湿又不通风的环境中需更长时间。厕浴间防水做完后,蓄水24h不渗漏为合格。屋面防水做完后,应检查排水系统是否畅通、有无渗漏(可在雨后或持续淋水2h以后进行,有条件蓄水的屋面可用24h蓄水检查)。
扩展资料
JS防水涂料使用方法
1、基层处理:把表面浮灰、杂质、油污必须清理干净,对不平处和疏松、蜂窝、麻面部位要先用纳米硅抗渗堵漏剂或水泥修补平整。
2、底涂层施工:JS防水乳胶兑2倍自来水充分搅拌均匀即为底涂料。涂刷时要用力来回搓至少3遍,确保与基层粘结良好,防止空鼓起皮。
3、中涂与面涂施工:直接使用,不加水泥的情况下不能加水,分2~3道涂刷,每道施工间隔要等上一道干后才能施工下一道。对于转角处、女儿墙、穿墙管、排气孔、落水口等特殊部位,根据需要可用玻璃丝布作增强处理。
4、潮湿基层施工:JS防水乳胶可在潮湿但无明水的基层上直接施工。如果施工场所通风不良影响干燥,或者地面太粗糙需增加涂层厚度,应配合水泥使用。
5、防水层材料用量:底涂层用量约0.3~0.5kg/㎡,中涂层用量约1~3kg/ ㎡,面涂层用量约1~2kg/ ㎡;JS防水乳胶总用量一般为2.5~5kg/㎡,可根据工程需要自由增减,并可根据工程施工要求附加丙纶卷材、无纺布或玻璃丝布。
参考资料来源:百度百科-JS防水涂料
参考资料来源:百度百科-JS