首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么0.1 + 0.2 不等于 0.3 ?

很多编程语言中,我们都会发现一个奇怪的现象,就是计算 0.1 + 0.2,它得到的结果并不是 0.3,比如 CC++、JavaScript 、Python、Java、Ruby 等,都会有这个问题。...当然如果你把它作为条件判断语句,返回的也是 false:还有其他的例子:6 * 0.1 = 0.6 但计算机显示为 0.6000000000000001​0.11 + 0.12 = 0.23 但计算机显示为...而 1/5 (0.2) 或 1/10 (0.1) 是无限循环的小数,因为分母使用了 5 或 10 的质因数。所以当我们尝试表示像 0.1 这样的十进制小数时,计算机会使用一个近似。...这个近似是通过将无限循环的二进制小数转换为有限位数的浮点数表示来实现的。因此,当我们计算机中进行浮点数运算时,结果可能会有微小的误差。...(无限循环)。这个无限循环的模式 0011 会一直重复下去,因为二进制系统只能通过这种方式来近似表示十进制的 0.1。实际的计算机系统,这个无限循环的小数会被截断为有限位数,以便存储和计算。

7610

Awk学习笔记

BEGIN模块 BEGIN模块紧跟着动作块,这个动作块awk处理任何输入文件之前执行。所以它可以没有任何输入的情况下进行测试。它通常用来改变内建变量的,如OFS,RS和FS等,以及打印标题。...屏幕上打印”What is your name?",并等待用户应答。当一行输入完毕,getline函数从终端接收该行输入,并把它储存在自定义变量name。...分配给数组line的是第一个域的,所有记录处理完成,special for循环将删除每一个元素。 14.8. awk的内建函数 14.8.1. ...月1日起一年的第几天 %m 十进制表示的月份 %M 十进制表示的分钟 %p 12小时表示法(AM/PM) %S 十进制表示的秒 %U 十进制表示的一年的第几个星期(星期天作为一个星期的开始...) %w 十进制表示的星期几(星期天是0) %W 十进制表示的一年的第几个星期(星期一作为一个星期的开始) %x 重新设置本地日期(08/20/99) %X 重新设置本地时间(12:00:00

2.4K30
您找到你想要的搜索结果了吗?
是的
没有找到

什么是Canary保护

什么是Canary gdb指令复习 有无Canary呢就是函数压栈的时候,函数刚开始执行的时候,它会多一个参数,也就是ebp的上面,会压入一个Canary的子函数验证完之后,对比Canary...加入保护的gcc指令: gcc -m32 -no-pie -fstack-protector-all -o canary canary.c 加入保护如下图: gdb指令复习 s step,si步入...(gdb) until 或(gdb) u 指定程序直到退出当前循环体这里,发现需要把光标停止循环的头部,然后输入u这样就自动执行全部的循环了。...d 按十进制格式显示变量。u 按十进制格式显示无符号整型。o 按八进制格式显示变量。t 按二进制格式显示变量。a 按十六进制格式显示变量。i 指令地址格式c 按字符格式显示变量。...addr处的反汇编结果

11310

C语言笔记---(2)基本语法

,声明无类型指针 volatile 说明变量程序执行可被隐含地改变 while 循环语句的循环条件 ---- 标识符 什么是标识符?...1+2 在这个地方的1+2就是一个表达式,用来获取1+2这个算术的计算结果表达式加上分号,也是语句,但是没有作用。...可以用别的来替换,双引号的2就是要替换的。占位符的第一个字符都是%,第二个字符是表示占位符的类型,这里是ii代表整数,是int的首字母。...编译输出的结果为:Are these 2 paragraphs? 一段输出文本可以使用很多个占位符。 printf("My name is %s....由于小数的默认显示精度是小数点6位,所以123.45输出结果的头部会添加2个空格。 (2)总是显示正负号 默认情况下,printf()正数不显示+号,只对负数显示-号。

88220

16位汇编第七讲汇编指令详解第第三讲

十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果 2.分成压缩BCD码和非压缩BCD码调整 简而言之:          以前的时候你有个手表,里面的数字是九,如果加一个1就是0...) al = 68h + 28h = 90h 但是因为daa了,所以是十进制进位 是96 简单理解就是,本来16进制 9+1 = A的,但是十进制调整,就不能是A了,需要变为0,结果是10了 DAA的内部原理就是遇到...2.AND指令设置CF = OF = 0,根据结果设置SF、ZF和PF状态,而对AF未定义 AND 就是C语言的与运算,1 & 1 = 1  1&0 = 0 2.逻辑指令 OR(或运算) 作用: 1...) 作用: 将操作数移动一位或多位,分成逻辑移位和算术移位,分别具有左移或右移操作 操作指令: SHL reg/mem,1/CL   (其中CL是次数,8086的,移动一次可以直接写,但是移动多次比如放到计数器...逻辑右移SHR CF位补零 SAR则补符号位 移位指令对标志的影响 按照移入的位设置进位标志CF 根据移位结果影响SF、ZF、PF 对AF没有定义 如果进行一位移动,则按照操作数的最高符号位是否改变

1.5K50

Verilog HDL 语法学习笔记

,从开关级、门级、寄存器传送级(RT L)到算法级,包括进程和队列级; • Verilog HDL 能够监控模拟验证的执行,即模拟验证执行过程设计的能够被监控和显示,这些也能够用于与期望比较,不匹配的情况下打印报告消息...// 实数型常量 "BOND" // 串常量;每个字符作为 8 位 ASCII 存储 表达式的整数值可被解释为有符号数或无符号数。.../State 为位向量 10110,即十进制数 22 State = 'b1011; // State 为位向量 01011,是十进制 11 Verilog HDL 语言中,对于向量形式的线网和寄存器...只要在右端表达式的操作数上有事件(事件为的变化)发生时,连续赋值语句即被计算,如果结果有变化,新结果就赋给左边的线网。...", Delay) ; end 电平敏感事件控制,进程语句或进程的过程语句一直延迟到条件变为真才执行。

2K41

安卓十进制转换器

今天App Inventor中发现个组件能够将十进制转换成二进制和十六进制,于是我用这个东西做了个十进制转换器。 十进制转换器:能够将输入的十进制数转换成二进制,八进制,十六进制。...[只支持正整数] 下载地址:http://pan.baidu.com/s/1eSofIFK 问题来了,程序并没有内置十进制转八进制的组件,怎么办,怎么办? 自己动手丰衣足食!!!...十进制转八进制 [我的变量:指的是每次相除的整数结果,如例一的125,15,1,0。结果:是将每次循环的余数拼接,最终目标就是转换的正确答案。就低取整:就低取整就是忽略掉余数。...拼字串:就是拼接两个字符比如5和0拼接结果就是50,a和b拼接结果就是ab,余数:就是只要这个结果的余数部分] 这里我们将“文本输入框1的显示文本”带入例一的1000来计算下结果是否正确, “我的变量”...=1750; “我的变量” =上一个“我的变量”/8就低取整=1/8=0; 这时“我的变量”等于“0”所以跳出循环; 至此,当前“结果”变量返回的则是正确答案1750。

46020

String.Format使用方法

标志 + 含义 当用于一个格式化某个有符号代码时,假设非负,正号标志就会给它加上一个正号。假设该为负,就像往常一样显示一个负号。 缺省情况下,正号并不会显示。...另外,缀尾的0并不从小数中去除 3、 字段宽度 字段宽度是一个十进制整数,用于指定将出如今结果的最小字符数。假设的字符数少于字段宽度,就对它进行填充以添加�长度。...4、 精度 精度以一个句点开头,后面跟一个可选的十进制数。假设未给出整数,精度的缺省为零。 对于d,i,u,o,x和X类型的转换,精度字段指定将出如今结果的最小的数字个数并覆盖零标志。...假设转换的位数小于宽度,就在它的前面插入零。假设为零且精度也为零,则转换结果就不会产生数字。 对于e,E和f类型的转换,精度决定将出如今小数点之后的数字位数。...%A – 当前区域星期几的全称 %b – 当前区域月份的简写 %B – 当前区域月份的全称 %c – 当前区域首选的日期时间表达 %C – 世纪(年份除以 100 取整,范围从 00 到 99)

88620

【JavaScript】 基础

八进制表示 以0为前缀 JAVASCRIPT 1 var b = 021; //结果十进制的 17 3....十六进制 以0x为前缀 JAVASCRIPT 1 var c = 0x35;//结果十进制的 53 使用 : 整数可以采用不同进制表示,控制台输出时一律会按照十进制输出 小数 小数点表示...true 为 1,false 为 0 var isSave = true; var isChecked = false; undefined (程序返回的) 特殊,变量声明未赋值时显示 undefined...返回转换结果: 如果转换成功,返回 number 如果转换失败,返回 NaN,(Not a Number),只要数据存在非 number 字符,一律转换失败,返回 NaN Number("abc...0,交换元素的,b-a表示降序排列 作用:作为参数传递到 sort () ,会自动传入两个元素进行比较,如果 a-b>0, 交换元素的,自定义升序排列 String 对象 创建 var str

2.1K20

小小的 float,藏着大大的学问

而负数就比较特殊了点,负数计算机是以「补码」表示的,所谓的补码就是把正数的二进制全部取反再加 1,比如 -1 的二进制是把数字 1 的二进制取反再加 1,如下图: ?...---- 十进制小数与二进制的转换 好了,整数十进制转二进制我们知道了,接下来看看小数是怎么转二进制的,小数部分的转换不同于整数部分,它采用的是乘 2 取整法,将十进制的小数部分乘以 2 作为二进制的一位...话不多说,我们就以 8.625 转二进制作为例子,直接上图: ? 最后把「整数部分 + 小数部分」结合在一起,其结果就是 1000.101。...前面提到过,并不是所有小数都可以用「完整」的二进制来表示的,比如十进制 0.1 转换成二进制小数的时候,是一串无限循环的二进制数,计算机是无法表达无限循环的二进制数的,毕竟计算机的资源是有限。...可以看到,8 位指数部分是 01111011,23 位的尾数部分是 10011001100110011001101,可以看到尾数部分是 0011 是一直循环的,只不过尾数是有长度限制的,所以只会显示一部分

1.7K20

C语言中的基本输入输出

1.字符输出函数putchar putchar函数是字符输出函数,其功能是终端(显示器)输出单个字符。...()的用法: 假如您不想事先指定字段宽度,而是希望由程序来制定该,那么您可以字段宽度部分使用*代替数字来达到目的,但是您也必须使用一个参数来告诉函数宽度的是多少。...A是C99的标准) %i 把输入解释成一个有符号十进制整数 %o 把输入解释成一个有符号的八进制整数 %p 把输入解释成一个指针(一个地址) %s 把输入解释成一个字符串:输入的内容以第一个非空白字符作为开始...,并且包含直到下一个空白字符的全部字符 %u 把输入解释成一个无符号十进制整数 %x,%X 把输入解释称一个有符号十六进制整数 *修饰符scanf()的用法: *scanf()中提供截然不同的服务...当它检测到“文件末尾”(end of file)时,它返回EOF(EOF是文件stdio.h的定义好的一个特殊,一般,#define指令将EOF的定义为-1)。

3.7K90

Python运算符与流程控制 #学习猿地

**~x** 类似于 **-x-1** | (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 一个有符号二进制数的补码形式。...| x y 序列 , 如果 x y 序列返回 True。 | | not in | 如果在指定的序列没有找到返回 True,否则返回 False。.../余数/6180737);再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,得到的余数作为二进制数的高位有效位,依次排列起来 例如 125...| a >> 2 输出结果 15 ,二进制解释: 0000 1111 ### Python的流程控制 1.python语句的分类 2.流程控制相关的分类 3.顺序结构 4.分支结构 5.循环结构 6...单纯的循环结构的作用与break很像,但绝不能混为一谈!!! ```

41600

Python运算符与流程控制 #学习猿地

**~x** 类似于 **-x-1** | (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 一个有符号二进制数的补码形式。...| x y 序列 , 如果 x y 序列返回 True。   | | not in | 如果在指定的序列没有找到返回 True,否则返回 False。.../余数/6180737);再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,得到的余数作为二进制数的高位有效位,依次排列起来 例如 125...| a >> 2 输出结果 15 ,二进制解释: 0000 1111 ### Python的流程控制 1.python语句的分类 2.流程控制相关的分类 3.顺序结构 4.分支结构 5.循环结构 6...单纯的循环结构的作用与break很像,但绝不能混为一谈!!! ```

47720

Linux 命令(101)—— bc 命令

其中有四个特殊变量: scale 定义某些操作如何使用小数点的数字,默认为 0 ibase 定义输入数的基数,默认为十进制数 obase 定义输出数的基数,默认为十进制数 last 表示最后的输出...基本运算: - EXPR 相反数 ++ VAR 自增 1 -- VAR 自减 1 VAR ++ 表达式的结果是变量的,然后变量自增 1 VAR -- 表达式的结果是变量的,然后变量自增 1...比如表达式 a = 3 < 5 C 语言中 a 的为 0, bc ,因为 = 的优先级高于 <,所以 a 的为 3。...如果表达式 EXPRESSION 结果非 0,则循环执行语句 for ( [EXPRESSION1] ; [EXPRESSION2] ; [EXPRESSION3] ) STATEMENT for 循环语句...break 用于退出最近一层的 while 或 for 循环 continue 用于最近一层的 while 或 for 循环提前进入下一轮循环 halt 结束 bc return 从函数返回

3K10

DOS子程序汇编样例及详解

【一】将键盘上输入的十六进制数转换成十进制数,并在屏幕上显示。...ADD DL,30H ;余数位于1—9 之间,因此需要将AL+30 MOV AH,2 INT 21H ;输出该十进制数字 LOOP NEXT ;根据cx进行循环输出的操作 JMP STOP...4C,代码段结束,返回DOS datacate proc near ;说明datacate 子程序主程序段内 push cx ;将cx 压入栈备份 dec cx ;将cx 自减1,保证循环中使得...;代码段结束 END START ;主程序结束 (3)代码、过程、相应结果的说明和分析: 这里先采用上个实验的3和5作为测试样例,得到的结果如下: image.png 但是由于写程序只用了AL存储结果...,且设计程序时有了一定的思路实现遇到很多考虑不周的地方,导致再分析修改的思路,前前后发现又回到了起点。 ​

64520

awk 简明教程

BEGIN 和 END 模块 BEGIN模块紧跟着动作块,这个动作块awk处理任何输入文件之前执行,END不匹配任何的输入文件,但是执行动作块的所有动作,它在整个输入文件处理完成被执行。...类似于 C 语言中的 continue,但是 next 语句并非用于循环中。 { if ($1 ~/test/) { next } else { print } } 10. 数组 10.1....格式化输出 printf awk printf 的参数格式 格式符 说明 %d 十进制有符号整数 %u 十进制无符号整数 %f 浮点数 %s 字符串 %c 单个字符 %p 指针的 %e 指数形式的浮点数...%m 十进制表示的月份 %M 十进制表示的分钟 %p 12小时表示法(AM/PM) %S 十进制表示的秒 %U 十进制表示的一年的第几个星期(星期天作为一个星期的开始) %w 十进制表示的星期几(星期天是...0) %W 十进制表示的一年的第几个星期(星期一作为一个星期的开始) %x 重新设置本地日期(08/20/99) %X 重新设置本地时间(12:00:00) %y 两位数字表示的年(99) %Y 当前月份

1.2K20

C语言入门系列之3.顺序程序设计和输入输出

复合语句内的各条语句都必须以分号;结尾,大括号}外不能加分号。 空语句 只有分号;组成的语句称为空语句,即什么也不执行的语句,程序可用来作空循环体。 例如:while(getchar()!...非格式字符串输出时原样打印,显示起提示作用。 输出表列给出了各个输出项,要求格式字符串和各输出项在数量、类型和顺序上一一对应。...b的,但由于格式控制串不同,输出的结果也不相同。...赋值表达式给变量赋值,如a = 567;,a为变量名,567是变量的,&a是变量a的地址。...(2)*符 用以表示该输入项,读入不赋予相应的变量,即跳过该输入。 如scanf("%d %*d %d", &a, &b);,当输入1 2 3时,把1赋予a,2被跳过,3赋予b。

95320

Go:学习笔记兼吐槽(2)

布尔: 参数 含义 %t 单词true或false c....整数: 参数 含义 %b 表示为二进制 %c对应的unicode码 %d 表示为十进制 %o 表示为八进制 %q 该对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示 %x 表示为十六进制...它可以代表其他任何的标识符,但是它对应的会被忽略,所以仅能作为占位符使用。...(自动加分号导致) 允许条件表达式声明一个变量,以分号结尾,在这个变量后面再写条件表达式,这个变量的作用域只该条件逻辑块内。... 3 个字节 break 和 continue break 用于跳出循环 .net 等语言中,break 只能用于跳出当前循环,而在 Golang ,可以通过标签指明要跳出哪一层的循环

61320

一、C语言基础知识

3、每个C语言程序main函数是有且只有一个。 4、函数不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。...3、一个C语言程序有且只有一个main函数,是程序运行的起点。 第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。 2、每个C语言程序写完,都是先编译,链接,最后运行。...关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If的第一个字母大写了,所以不是关键字。...2)小数的合法写法:C语言小数点两边有一个是零的话,可以不用写。 1.0C语言中可写成1. 0.1C语言中可以写成.1。...4、int x=7.7;对滴,x就是7 5、float y=7;对滴,y就是7.0 3、复合的赋值表达式: int a=2; a*=2+3;运行完成,a的是10。

92620
领券