变量和简单数据类型

简单数据类型,分为字符串、数值型、布尔型、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属性


变量和简单数据类型(化浮为整)相关推荐

  1. Python书籍阅读与记录6.10 II 变量和简单数据类型

    我感觉这样记录,对于我来说挺好的.因为我看两端对齐的语句容易走神,这样记录阅读的话,就很少出现之前的情况. 我写的初衷,也是自己来看,所以感觉写的不好的,请保留下意见,谢谢. 里面的每一个字我都看过, ...

  2. Python书籍阅读与记录 6.10 II 变量和简单数据类型

    我感觉这样记录,对于我来说挺好的.因为我看两端对齐的语句容易走神,这样记录阅读的话,就很少出现之前的情况. 我写的初衷,也是自己来看,所以感觉写的不好的,请保留下意见,谢谢. 里面的每一个字我都看过, ...

  3. Python3 —— 变量和简单数据类型

    Python3 -- 变量和简单数据类型 目录 python3 -- 变量和简单数据类型 一.变量 1.变量(每个变量都存储了一个值--与变量相关联的信息) 2.变量命名 二.简单数据类型(整型,浮点 ...

  4. python显示小数点后几位数_Python编程从入门到实践-连载1(变量和简单数据类型)...

    第二章 变量和简单数据类型 2.2.0 变量 我们添加了一个名为message的变量.每个变量都存储了一个值--与变量相关联的信息.在这里,存储的值为文本"Hello Python worl ...

  5. 一万字全网最全的“Python变量和简单数据类型知识”,干货满满

    第二章:Python变量和简单数据类型 在本章中,你将学习可在Python程序中使用的各种数据,还将学习如何在程序 中使用变量来表示这些数据. 2.1 运行hello_world.py时发生的情况 运 ...

  6. 【day 1】python编程:从入门到实践学习笔记-安装、变量和简单数据类型

    学习笔记目录 [day 1]python编程:从入门到实践学习笔记-安装.变量和简单数据类型 [day 2]python编程:从入门到实践学习笔记-列表以及其操作 [day 3]python编程:从入 ...

  7. Python变量和简单数据类型

    前言 在本文中,你将学习可在Python程序中使用的各种数据,还将学习如何将数据存储到变量中,以及如何在程序中使用这些变量. 运行hello_world.py时发生的情况 在一切开始之前,让我们看一下 ...

  8. Python基础——1.变量和简单数据类型

    Python基础--1.变量和简单数据类型 1.0 前言 1.1 运行hello.py 1.2 变量 1.2.1 变量的命名和使用 1.2.2 使用变量时避免命名错误 1.3 字符串 1.3.1 使用 ...

  9. Python自学(二)变量和简单数据类型

    第 2 章 变量和简单数据类型 文章目录 第 2 章 变量和简单数据类型 前言 一.运行hello_world.py时发生的情况 二.变量 2.1 变量的命名和使用 2.2 使用变量时避免命名错误 三 ...

最新文章

  1. laravel It is unsafe to run Dusk in production. In DuskServiceProvider.php line 43:错误处理
  2. maven生成jar包,包含第三方jar包
  3. 我对对象和引用的理解
  4. 【完整可运行代码】剑指 Offer 29. 顺时针打印矩阵
  5. JavaScript强化教程——正则表达式回溯
  6. 10个常用python标准库_【循序渐进学Python】11.常用标准库
  7. CNN(Convolutional Neural Network) 的基础
  8. api数据加密的定义_API 设计基础规范
  9. poj3061 尺取法 挑战程序设计竞赛
  10. “我们的边缘计算技术点,可能超前了业界一点”
  11. centos7-docker-swarmkit集群应用
  12. 如何“ git clone”包括子模块?
  13. ps6人脸识别液化工具在哪_Photoshop教学:人脸识别液化功能介绍
  14. 基于SSM实现的儿童疫苗信息管理系统设计与实现毕业设计源码311930
  15. 零基础自学python计划_「经验分享」python零基础学习规划与建议!
  16. iphone8 android传文件,如何从iPhone或Android将数据传输到新的iPhone 8
  17. 密钥文件读取保存为String,并转PublicKey/PrivateKey
  18. 【经典论文解读】YOLO 目标检测
  19. Android开发——新建库、删除库
  20. 小程序画布合成二维码海报图,并保存到相册

热门文章

  1. 提高文章阅读量的最新技巧
  2. Mac苹果电脑远程的方法和教程
  3. hdoj 1276 士兵队列训练问题 模拟队列
  4. 中兴服务器车间,走进中兴通讯车间 探秘智能手机生产链(多图)
  5. 爬虫练习(Day4)
  6. 目标跟踪算法--Camshift 和Meanshift
  7. 今日行业报告更新10月25日
  8. 【jenkins】创建一个project基础配置、自动化邮件发送、pytest_terminal_summary收集结果
  9. a55计算机主板,高性价比APU主板!AMD A55主板对比评测
  10. 【数据结构/C语言版】【图】邻接表存储