变量和简单数据类型(化浮为整)
变量和简单数据类型
简单数据类型,分为字符串、数值型、布尔型、null和undefined
变量需要用关键字var定义,它的作用就是保存这些值
字符串就是一些文本,通过操作符 “+” 可以对字符串进行连接
var str01 = "我的名字是:";
var str02 = "叶小凡";
alert(str01 + str02 );
数值型:数字分为整数和小数 都可以呀ongoing变量装起来
布尔型:分为true和false
用if语句判断,if("叶小凡"){ alert(‘真’);} else { alert(" 假" ); } ==>运行结果为 真
不为空的字符串自然是真,如果字符串是空的即 if 里面为空,结果为 假
数值型分正数、负数和0
if( 10 ){ alert(‘真’);} else { alert(" 假" ); } ==>运行结果为 真
if( -10 ){ alert(‘真’);} else { alert(" 假" ); } ==>运行结果为 真
if( 0 ){ alert(‘真’);} else { alert(" 假" ); } ==>运行结果为 假
字符串只要不为空,就表示真,否则就是假。
数字只要不为0,就代表真,否则就是假。
null 和 undefined 都是代表空值
null 是主动地将某个变量设置为空值
undefined 更多的是因为对于一些意外状况而出现( 定义了一个变量,但是没有给他赋值,所以他的值就是undefined )
真假判断,null和undefined都是空值,自然代表了假
化浮为整
计算0.1 + 0.2
var num01= 0.1 ;
var num02= 0.2;
alert ( num01 + num02); ==> 结果为 0.30000000000000004
( 精度丢失问题)
小数计算丢失精度,整数计算没有这个问题
var num01= 0.1 ;
var num02= 0.2;
num01 = num01 * 10;
num02 = num02 * 10;
alert ( num01 + num02); ==>结果为 3
则
alert(num01 + num02 )/ 10); ==> 结果0.3
如果不是0.1+0.2 , 0.1和0.01 呢 小数点后面的位数!
0.01就是小数,也是浮点数,化浮为整就要 X100 ( 100 是因为小数点后面有两位)
获取小数点后面的位数! 把数字当成字符串处理! 因为字符串有一个length属性
var num01 = "0.01";
alert (num01.length); 结果是4,表示0.01这个字符串有4位
字符串有个splice函数,把字符串通过某者规则和标记符号进行分隔,并返回一个数组
( splice方法是插入、删除或者替换数组元素,不仅在原有数组修改,还返回被处理的内容。
splice方法用前两个参数进行定位,余下的参数表示插入 )
0.01如果通过 " . ( 点) " 来分隔 就会返回一个字符串数组 整个字符串数组里面应该有两个字符串,一个是0 一个是01
var num01 = " 0.01 ";
var num01_arr = num01.split(".");
经过点号分隔,0.01被拆开了 变成了字符串数组[ 0,01 ] 其中想要获得01,又因为数组下标是从0开始,所以需要这样获取:
var num01 = "0.01";var num01_arr = "num01.split(".");var num01_arr_2 = num01_arr[1];alert ( num01_arr_2.length);
最后结果为 2
获取到了0.01小数点后面的位数(小数点后两位),两位对应倍数100
计算0.1+0.2 需要先把两个数中比较小的那个数字通过上面这个方法求出倍数,然后把这两个数都乘以这个倍数,就可以化浮为整了。(整数计算没有精度丢失问题,计算出结果后除以倍数就得到正确答案了!)
函数:返回值、参数列表和函数体
(将函数想象成黑盒子,参数就是黑盒子里的物体<可以是单个的也可以是多个物体> 黑盒子内部空间就是函数的函数体,在函数体中,对参数进行处理,处理结束后,该函数设计者需要得到某个结果从黑盒子中扔出,就可以使用return关键字将其抛出)
业务逻辑:必须清楚地明白自己设计这个函数是为了什么。( 为了解决什么问题)
例:0.1+0.2 小数相加会有精度丢失问题 => 为了解决这个问题 先把0.1和0.2变成整数进行计算,最后再除以一个倍数10。对于小数计算,可以设计一个通用的函数,将需要相加的参数传递进去,将化浮为整的逻辑就写在函数体中,最后将结果返回
function add(num1,num2){// 将数字转换成字符串num1 = num1.toString();num2 = num2.toString();// 获取两个数字的小数点后面位数var a = num1.split(".")[1].length;var b = num2.split(".")[1].length;//用console.log查看倍数console.log(a);console.log(b);
函数的调用:调用一个函数就只需要在函数名称右边打一对小括号就可以。如果函数有一个参数,那么就在小括号里填入具体数据,比如变量或者直接量。如果函数有多个参数,就在圆括号填入多个具体数据,用逗号分隔。例:var num1 = 10; var num2 = 20; add(num1,num2);
比如:传进来0.2 0.02
// 获取两个数字的小数点后面的位数
var a = num1.split(".")[1].length;
var b = num2.split(".")[1].length;
计算得出位数:a = 1 b=2
( 需要把0.2 0.02同时乘100 变成20 和 2 ,然后计算20+2 =22 ,最后除以100得到0.22 )
var max = a; //先默认较大的位数为a
if ( a<b ){ //如果a比b小,就把b 赋值给max(最大值)max = b ;
}
//根据位数获得对应的10的幂数
//两个小数同时乘以倍数
//相加完毕后,再将结果除以倍数
max就是较大的位数,如果 max = 2 那么2就变成100 ( 也就是10 X 10 )
max是3就是10*10*10 4=>10*10*10*10 ······
//根据位数获取对应的10的幂数
var beishu = 1;
for (var i= 0;i<max;i++){
beishu = beishu * 10;
}
如果传入的是0.2 0.02 那么max就是2,for就循环两次,每次倍数都扩大10倍,两次扩大100
// 两个小数同时乘得到的这个倍数
num1 = num1 * beishu;
num2 = num2 * beishu;
0.2*100 = 20 0.02*100 = 2 => 20 + 2 = 22
最后相加以后再除以倍数,把结果返回出去
// 相加完后,将结果除以倍数!
var sum = ( num1 + num2 ) / beishu;
return sum;
22 / 100 = 0.22
最后调用函数来算最开始的值: alert(add(0.1,0.2)) => 结果为0.3
如果在该代码中,测试1和0.2 cannot read property ' length' of undefined
只要是字符串就会有length属性 length属性代表了一个字符串的长度
var a = num1.split(".")[1].length;中 num1.split(".")[1] 这句代码的意思是将变量num1根据“.”进行分隔。这个时候num1的值为1,本来就没 有点号。也就是说,给字符串“1”根据“.”分隔,那么只会得到一个 只有单个数据的数组:[“1”]。又因为数组的下标是从0开始的,所以 [1]代表从数组的第2个位置获取数据。可是num1.split(".")得到的 数组只有一个元素,换句话说,只有下标为0的位置里才有数据,因此,强行去[1]的地方获取数据自然是 不可行的,自然就会报错
传入数字后,先判断是不是小数,如果是就继续之前的方法 ,如果不是小数就默认为小数位是0
只要是字符串 就会有index O放方法 => 利用字符串 indexOf 方法
indexOf 方法 : 是在原字符串中搜索一个特定的字符串,
比如说从“ 123456” 搜索2 ,字符串的下标从0开始,所以找到2的时候,返回结果为1
如果查询的内容在字符串中不存在:
查询一个不存在的匹配项,得到的结果就是 -1
利用indexOf 方法 查询 “ . ” 得到一个返回值,只要返回值不是-1 就代表是有小数点,说明这个数是小数
replace 方法
先将小数的 “ . ( 点 )” 去掉
2.2就变成22;1.001变成1001 为了保证位数的一致,
1.001比2.2小数位数多了两位,所以要在22后面补零,变成2200
如果是去除小数点,就用replace," abcd " 里面内容替换成大写C 就变成了" abCd"
则 "abcd".repalce("c","C")
这次将传入的两个参数num1 num2 用toString 方法写成字符串
用index获取小数点位置( 如果其中一个是整数那么index获取的就是-1 ,等于-1时不存在,小数位就是0 ,如果不是-1 那么就通过字符串截取函数splice获取小数点的位数)
function add (num1,num2){// 将数字转换成字符串num1 = num1.toString();num2 = num2.toString();// 获取小数点的位置var index1 = num1.indexOf(".");var index2 = num2.indexOf(".");// 如果小数点存在,那么就再获取各自的小数位数var ws1 = 0 ;var ws2 = 0;if ( index1 ! =-1){ws1 = num1.split(".")[1].length;}if ( index2 != -1 ){ws2 = num2.split(".")[1].length;}// 看谁的小数位数大,谁的小数位数小 var bigger = (ws1>ws2) ? ws1 : ws2 ;var smaller = (ws1<ws2) ? ws1 : ws2 ;// 计算得到需要补齐的0的个数,大的位数减去小的var zerosCount = bigger - smaller;//( 不管两个数谁大谁小 )全部去除小数点num1 = num1.replace(".","");num2 = num2.replace(".","");// 比较num1和num2谁大,比较方法就是看谁是smaller,是smaller的一方就补0if(ws1 == small){for(var i = 0 ;i<zerosCount;i++){num1 += "0";}}else{for(var i = 0 ;i<zerosCount;i++){num2 += "0";}}// 开始计算var sum = parseInt(num1) + parseInet(num2);//根据较大的小数位数计算倍数var beishu = 1;for(var i = 0; i<bigger;i++){beishu = beishu * 10;}sum = sum / beishu;return sum;} // 弹窗显示alertalert(add(1.001,2.002));}
先将两个数字转换成字符串(toString)
获取各自小数位,如果是整数没有小数位那么就是0
接下来去掉小数点 replace ==> "1.01".replace("."," ") 这样得到的就是101
如果另一个数是整数2,那么为了保证位数一直,就需要再整数后面添0 ,添的和小数位数一样多
那么两个0就是2和1.01位数差,要拿到2和1.01小数位数,利用字符串截取的办法
获取1.01小数后面使用splice函数和length属性
变量和简单数据类型(化浮为整)相关推荐
- Python书籍阅读与记录6.10 II 变量和简单数据类型
我感觉这样记录,对于我来说挺好的.因为我看两端对齐的语句容易走神,这样记录阅读的话,就很少出现之前的情况. 我写的初衷,也是自己来看,所以感觉写的不好的,请保留下意见,谢谢. 里面的每一个字我都看过, ...
- Python书籍阅读与记录 6.10 II 变量和简单数据类型
我感觉这样记录,对于我来说挺好的.因为我看两端对齐的语句容易走神,这样记录阅读的话,就很少出现之前的情况. 我写的初衷,也是自己来看,所以感觉写的不好的,请保留下意见,谢谢. 里面的每一个字我都看过, ...
- Python3 —— 变量和简单数据类型
Python3 -- 变量和简单数据类型 目录 python3 -- 变量和简单数据类型 一.变量 1.变量(每个变量都存储了一个值--与变量相关联的信息) 2.变量命名 二.简单数据类型(整型,浮点 ...
- python显示小数点后几位数_Python编程从入门到实践-连载1(变量和简单数据类型)...
第二章 变量和简单数据类型 2.2.0 变量 我们添加了一个名为message的变量.每个变量都存储了一个值--与变量相关联的信息.在这里,存储的值为文本"Hello Python worl ...
- 一万字全网最全的“Python变量和简单数据类型知识”,干货满满
第二章:Python变量和简单数据类型 在本章中,你将学习可在Python程序中使用的各种数据,还将学习如何在程序 中使用变量来表示这些数据. 2.1 运行hello_world.py时发生的情况 运 ...
- 【day 1】python编程:从入门到实践学习笔记-安装、变量和简单数据类型
学习笔记目录 [day 1]python编程:从入门到实践学习笔记-安装.变量和简单数据类型 [day 2]python编程:从入门到实践学习笔记-列表以及其操作 [day 3]python编程:从入 ...
- Python变量和简单数据类型
前言 在本文中,你将学习可在Python程序中使用的各种数据,还将学习如何将数据存储到变量中,以及如何在程序中使用这些变量. 运行hello_world.py时发生的情况 在一切开始之前,让我们看一下 ...
- Python基础——1.变量和简单数据类型
Python基础--1.变量和简单数据类型 1.0 前言 1.1 运行hello.py 1.2 变量 1.2.1 变量的命名和使用 1.2.2 使用变量时避免命名错误 1.3 字符串 1.3.1 使用 ...
- Python自学(二)变量和简单数据类型
第 2 章 变量和简单数据类型 文章目录 第 2 章 变量和简单数据类型 前言 一.运行hello_world.py时发生的情况 二.变量 2.1 变量的命名和使用 2.2 使用变量时避免命名错误 三 ...
最新文章
- laravel It is unsafe to run Dusk in production. In DuskServiceProvider.php line 43:错误处理
- maven生成jar包,包含第三方jar包
- 我对对象和引用的理解
- 【完整可运行代码】剑指 Offer 29. 顺时针打印矩阵
- JavaScript强化教程——正则表达式回溯
- 10个常用python标准库_【循序渐进学Python】11.常用标准库
- CNN(Convolutional Neural Network) 的基础
- api数据加密的定义_API 设计基础规范
- poj3061 尺取法 挑战程序设计竞赛
- “我们的边缘计算技术点,可能超前了业界一点”
- centos7-docker-swarmkit集群应用
- 如何“ git clone”包括子模块?
- ps6人脸识别液化工具在哪_Photoshop教学:人脸识别液化功能介绍
- 基于SSM实现的儿童疫苗信息管理系统设计与实现毕业设计源码311930
- 零基础自学python计划_「经验分享」python零基础学习规划与建议!
- iphone8 android传文件,如何从iPhone或Android将数据传输到新的iPhone 8
- 密钥文件读取保存为String,并转PublicKey/PrivateKey
- 【经典论文解读】YOLO 目标检测
- Android开发——新建库、删除库
- 小程序画布合成二维码海报图,并保存到相册