你还不知道~~这个是什么意思吗,还以为是作者写错了

news2024/10/5 21:20:35

文章目录

  • 前言
  • 一、来个例子
  • 二、按位非~
  • 三、小知识


前言

主要是来学习一下js中运算符的相关的知识


一、来个例子

~~(Math.random() * 10)

看起来像是要获取随机数的。
我们先把括号内的东西粘到控制台看看:

结果:
(Math.random() * 10)
//4.47062635057776
(Math.random() * 10)
//9.485037450706146
(Math.random() * 10)
//1.0411424656363288
(Math.random() * 10)
//5.207778723704015
(Math.random() * 10)
//3.1793270193668133

整体看看结果:
确实是用来获取0到10以内的随机数的

~~(Math.random() * 10)
//5
~~(Math.random() * 10)
//1
~~(Math.random() * 10)
//7
~~(Math.random() * 10)
//6
~~(Math.random() * 10)
//8
~~(Math.random() * 10)
//7
~~(Math.random() * 10)
//1

但是具体的作用是什么呢,还是得到mdn看看。但是并没有搜索到相关符号,只看到了单个的运算符~

二、按位非~

按位非运算符(~)将操作数的位反转。如同其他位运算符一样,它将操作数转化为 32 位的有符号整型。

什么是有符号整型数看这里—>

看看mdn上面提供的例子:

const a = 5;     // 00000000000000000000000000000101
const b = -3;    // 11111111111111111111111111111101

console.log(~a); // 11111111111111111111111111111010
// Expected output: -6

console.log(~b); // 00000000000000000000000000000010
// Expected output: 2

所以能够理解两次取反的意思就是还是原值,但是为什么后面的小数没有了呢。

JavaScript中的浮点数采用的是双精度浮点数类型,即64位的Double类型来表示。IEEE 754标准定义了浮点数二进制表示的规范
按位取反操作符"~~"在转换浮点数时会一次性移除小数部分并通过对整数部分取反、加1来得到整数形式的方法。


三、小知识

字符串转为数字的方法:

const [a, b, c, d, e, f, g, h] = ['1', '2', '3', '4', '5', '6', '7', '8']
console.log(typeof (a - 0), (a - 0))
console.log(typeof parseInt(b), parseInt(b))
console.log(typeof parseFloat(b), parseFloat(b))
console.log(typeof ~~c, ~~c)
console.log(typeof +d, +d)
console.log(typeof Number(e), Number(e))
console.log(typeof Math.floor(f), Math.floor(f))
console.log(typeof Math.round(g), Math.round(g))
console.log(typeof eval(h), eval(h))

结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/554871.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试冲冲冲

目录 一、数据库MYSQL 1.1 Oracle与Mysql的区别 1.2 Mysql索引 1.3 Mysql事务 1.4 Mysql存储引擎 1.5 B树 1.6 锁 1.7 优化 一、数据库MYSQL 1.1 Oracle与Mysql的区别 Oracle与Mysql的区别_oracle和mysql区别_顾优秀的博客-CSDN博客 浅谈MySQL和Oracle的区别_oracle…

都说聚合配送好,它到底能解决哪些同城配送难题?

自外卖经济兴起以来,即时配送一直呈现爆炸式增长。与该领域相关的商家、平台、骑手、用户数量和订单数量,也在保持着快速增长。其服务类别已从外卖扩展到人们生活的各个方面,需求增量稳步增长。 市场配送渠道虽多 配送问题仍是大难题 到目…

淘宝618活动节奏指南

一年一度的618活动又要开始啦,今天跟大家分享的是618活动时间节点,以及活动预热,活动期间,以及活动结束之后咱们应该做哪些事情。 这个是今年618活动的一个时间节点,和往年一样,主要分为预售,开…

代码随想录算法训练营day48 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍III

代码随想录算法训练营day48 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍III 198.打家劫舍解法一:动态规划 213.打家劫舍II解法一:分别掐头和去尾,动态规划 337.打家劫舍III解法一:树的递归遍历动态规划 总…

基于IF的网站异常流量检测

基于IF的网站异常流量检测 小P:最近渠道好多异常数据啊,有没有什么好的办法可以识别这些异常啊 小H:箱线图、 3 σ 3\sigma 3σ 都可以啊 小P:那我需要把每个特征都算一遍吗?不是数值的怎么算啊? 小H&#…

【2023年4月美赛加赛】Y题:Understanding Used Sailboat Prices 三篇完整论文及代码

【2023年4月美赛加赛】Y题:Understanding Used Sailboat Prices 建25页完整论文及代码 1 题目 2023年MCM 问题Y:理解二手帆船价格 和许多奢侈品一样,帆船的价值也会随着年代和市场条件的变化而变化。所附的“2023_MCM_Problem_Y_Boats.xlsx”文件包括2…

【dfn序+DP】树

把一棵树转化成一个序列有三种方法: dfs序 dfn序(时间戳) 欧拉序 关于这三者的区别,参考这篇博客,讲的超级好! 重谈DFS序、时间戳和欧拉序 - Seaway-Fu - 博客园 (cnblogs.com) 题意: 思路…

【SpringBoot】七:Web服务---Servlet Filter Listener

文章目录 1.Servlet1.1 使用WebServlet创建Servlet1.2 使用编码方式创建Servlet 2.Filter2.1 使用WebFilter创建Filter2.2 使用编码方式创建Filter2.3 Filter排序2.4 使用框架中的 Filter 3. Listener 1.Servlet 1.1 使用WebServlet创建Servlet (1)编写servlet WebServlet(…

数仓建模理论

一、数仓建模理论 (一)前言 数仓建模就好比是图书馆的书能够分门别类的存放,不仅合理,齐全,而且易于查找。 数据模型就是数据组织和存储方法,强调从业务、数据存取和使用角度合理存储数据。只有将数…

数据结构课程设计——航空客运订票系统

航空客运订票系统 一、引言 1.1 问题的提出 随着时代的发展,智能化生产给社会带来方便与精确,本系统以方便大众,妥善管理机场票务操作为基旨而开发。 本程序以数据结构(c语言描述)存储结构进行开发。利用单链表等存储方式为基础…

字节技术面都过了,薪资都谈好了20K*13结果还是被刷了,问HR,原因是。。

面试被拒开端 分享下自己的求职小故事。在一家公司软件测试技术面试已经过了,然后和最终面试官沟通了下,面试官提出来一个薪资数字,我接受了这个提议并和hr同步了这个数字。再然后被拒了,理由就是期望薪资和职级不匹配。我询问后…

鸿蒙元服务万能卡片开发-stage模型和fa模型的卡片区别

一、项目类型 Application: 应用开发 Atomic Service:原子化服务开发 这里选择Empty Ability模板创建项目。 二、Stage模型卡片开发 Api:9 Model:stage Language:ArkTS AppScope :应用的全局配置信息。…

Flutter非常常用的几个布局小控件Center,SizeBox,Divider

Center简介 Center是Flutter中的一个布局小部件,用于将其子部件居中显示在父部件中。 Center的特点 Center小部件具有以下特点: 将子部件在水平和垂直方向上居中显示。默认情况下,Center会尽可能将子部件展开以填充可用空间。如果Center没…

docker未授权rce+docker逃逸复现

docker未授权rcedocker逃逸复现 前言:这段时间跟着bnessy师傅一起打内网,跟着bnessy师傅也学到了很多有用的姿势,这里就来复现几个内网的漏洞(大佬轻喷) 1、老规矩,还是fscan扫到的漏洞 通过访问&#xff1…

AI突袭景观设计界,这次是真的卷起来了!

目前,AI已经成为内容创作者的灵感来源和效率工具,从设计、内容、视频等创意性工作中,我们看到AI助力下提升了数倍效率,正是如此,也迎来了更多企业的关注,想要将AI融入到各行各业中。 神采PromeAI在不断更新…

Mybatis源码

Mybatis简介 持久层ORM框架,执行sql比较简单,扩展性强,与传统jdbc相比,省去了手写连接的几个步骤,可以通过配置。 节约数据库连接资源,代码易于维护。mybatis 在SqlMapConfig.xml 中配置数据库连接池&#…

【服务器数据恢复】raid离线磁盘上线失败导致分区不识别的数据恢复

服务器数据恢复环境: HP ProLiant DL某系列服务器,三块SAS硬盘组建raid阵列。 上层系统部署有数据库,数据库存放在D分区,备份存放在E分区。 服务器故障: 磁盘故障导致RAID瘫痪,其中一块硬盘状态灯显示红色…

接口测试:Eolink Apikit 和 Postman 哪个更好用?

接口测试:Eolink Apikit 和 Postman 哪个更好用? 很多做服务端开发的同学,应该基本都用过 Postman 来测试接口,虽然 Postman 能支撑日常工作,但是总感觉还是少了点什么,比如需要 Swagger 来维护接口文档&am…

故障分析 | innodb_thread_concurrency 导致数据库异常的问题分析

作者通过分析源码定位数据库异常,梳理参数 innodb_thread_concurrency 设置的注意事项。 作者:李锡超 一个爱笑的江苏苏宁银行数据库工程师,主要负责数据库日常运维、自动化建设、DMP 平台运维。擅长 MySQL、Python、Oracle,爱好骑…

【coding加油站】vue单页面手机商城设计

1、引言 设计结课作业,课程设计无处下手,网页要求的总数量太多?没有合适的模板?数据库,java,python,vue,html作业复杂工程量过大?毕设毫无头绪等等一系列问题。你想要解决的问题&am…