我是靠谱客的博主 火星上柠檬,最近开发中收集的这篇文章主要介绍JavaScript【运算符特性】【损失精度】运算损失精度的问题运算符特性:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

运算损失精度的问题

JavaScript在进行浮点数运算的时候会有精度丢失的问题;eg:0.1 + 0.2 = 0.3000000000004;那么为什么会造成这种情况呢,原因是,把浮点数转化为二进制机器码,然后再转换成十进制的数值的时候有精度的损失,而这个差值在我们JavaScript中,给算上了,因此0.1 + 0.2 != 0.3;

怎么解决精度的问题呢?

可以同时先把他变成一个整数,比如所*10 *1000 *1000…再进行运算,运算结束以后再除回来。

var num1 = 0.1;
var num2 = 0.2; 
document.write(num1 + num2); // 0.30000000000000004
document.write((num1 * 100 + num2 * 100) / 100); // 0.3

运算符特性:

双等于号具有自动转字符类型的性质:

 document.write(2 == "2"); //  true   :双等于号会转型,把数字字符转化为数字类型
 document.write(2 === "2"); // false  全等于号是是会判断数据类型的。数值型不等于字符串类型

逻辑运算符:
如果在逻辑运算中,逻辑运算符左边的值就能确定整个式子的结果的话,那么就不会再往下看了。有以下两种情况:

  1. &&运算中,左边第一个是false,那么就不会再计算右边的式子,此时直接输出结果。
  2. || 运算中,左边第一个值是true,那么程序也就不会再计算或运算符右边的式子,此时直接输出结果。
// 逻辑与短路运算结果的特性:
<script>
        document.write(21 && 15); //如果表达式一为真则 输出后面表达式二的值15
        document.write(0 && 15); //如果前面表达式一为假 则输出前面表达式一的0
        // 都有哪些是假呢?     eg: 0 null undefined  ' '(空字符串)  NaN
</script>

// 逻辑或短路运算结果的特性:
<script>
        document.write(21 || 15); // 如果表达式一位真,那么就输出表达式一 21
        document.write(0 || 15); //如果表达式一位假,那么就输出表达式二 15
</script>


// 逻辑或影响运算的例子:
<script>
        var num = 0;
        document.write(123 || num++); // 123
        document.write(num); // 是1么?不是!  答案是:0  ;此时并没有自增,因为逻辑中断了
</script>

以上情况被称为:逻辑中断(短路运算);

运算符的优先级

  1. 小括号:()
  2. 一元运算符 也就是 只有自己一个式子运算 eg: num++ , ++num
  3. 算数运算符: 先乘除 再加减
  4. 关系运算符: 大于 大于等于 小于 小于等于
  5. 相等运算符:== != === !==
  6. 逻辑运算符:&& ||(先与再非)
  7. 赋值运算符: ==
  8. 逗号运算符:,

总结:优先级括号最大;逗号最小…


运算符优先级例题:
// 计算:
console.log(4 >= 6 || '你' != '帅哥' && !(12 * 2 == 144) && true);  

结果等于什么呢?怎么运算呢?

首先我们先划分一下,我们能看到有逻辑&&与||这两个的优先级是最低的,那么以它们为界分成四部分。是不是有思路了...此时也不要大意,不能先算前面的4 >= 6应该先算后面的三个式子,为什么呢?因为在逻辑&&的优先级大于逻辑||。

在这里插入图片描述
以上运算过程为:

方程的形式写出来:
=  false || true && true && true && true                   (&&优先级大于||)
=  false || true
=  true

最后再来两道题吧…

console.log('敲代码'||'出去玩');
console.log('出去玩'&&'敲代码');

                                    // 他们的结果是?... 
                                    
结果都是: “敲代码”

或运算第一个为真就不用往后面看了
与运算第一个为真那就直接输出第二个值

在这里插入图片描述

最后

以上就是火星上柠檬为你收集整理的JavaScript【运算符特性】【损失精度】运算损失精度的问题运算符特性:的全部内容,希望文章能够帮你解决JavaScript【运算符特性】【损失精度】运算损失精度的问题运算符特性:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部