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

盘点Excel那些有趣“bug”

经过测试Excel并不存在2100年2月29日,那为什么只有1900年这一天错了?...可是输入30/12/31却又变会1930年了,Excel按照什么规则判断年份? ?...简而言之,计算计算过程使用二进制,对于1.2-1.1结果为2进制循环小数存储时会进行小数截断,导致出现误差。...对于所有操作计算都做两次ROUND过于繁琐,这里可以使用Excel提供另一个设置,使用“显示精度”,这样Excel存储计算时,会按照单元格设置显示小数位数来保留精度。 ?...如截图,单元格SUM结果为0,同时单元格左上角有绿色三角提示“以文本形式存储数字“。这个提示就是SUM结果为0原因,这些数字实际存储格式为文本,而文本并不参加数字运算。

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

浮点数美丽表象(为什么要慎用浮点数)

输出应该是2000w,但为什么少了3222784.0,如果在生成环境,这意味着我们钱凭空消失了3222784.0!why?...这其实是float累加过程精度丢失导致,要理解这点我们首先要理解什么是浮点数。首先我们了解数计算是如何表示,因为计算机只能理解0和1两个数,所以一切信息都是用二进制表示。...没错,计算也是这么做,只不过用是2进制而已。 float使用了4个字节来存储数据,总共32位,最高位作为符号位,最高2-9位作为指数位,最后23位才作为有效数位。...注意,23位之前有个1被省略掉了,所以他有效位其实是24位,float所能表示有效数值只有$2^{24}$,大概8位数,因此它不能标识超过8位有效数字,否则会丢失精度,这就是浮点数美丽表象。...上面的代码一直+1,当sum大于16777216之后,1.0为了和sum指数位对其,它有效数会右移动24次,上面说到float有效数只有24位,所以它会完全变成0。

1.1K20

为什么0.1 + 0.2 不等于 0.3 ?

而以下几个计算式却能得到我们想要结果:这是为什么?...二进制,,浮点数通常使用 IEEE 754 标准进行表示,无法准确表示小数有 0.1、0.2 或 0.3 这样数字,因为它使用是二进制浮点格式。...而 1/3、1/6 和 1/7 是无限循环小数,因为分母使用了 3 或 7 质因数。二进制(计算机使用系统),如果一个分数使用基数(2)质因数来表示,那么它可以被精确地表示。...这个无限循环模式 0011 会一直重复下去,因为二进制系统只能通过这种方式来近似表示十进制 0.1。实际计算机系统,这个无限循环小数会被截断为有限位数,以便存储和计算。...()方法虽然显示上解决了问题,但它并没有改变数字实际值,它只是改变了数字表示形式。

7410

新人必备!15个常用EXCEL函数

函数SUM就是用来承担这个任务SUM参数可以是单个数字、一组数字,因此SUM加法运算功能十分强大。...例如,如果A1:A10是COUNT函数参数,但是其中只有两个单元格含有数字,那么COUNT函数返回值是2。...函数只有一个参数,语法结构是: =INT(number) 相反,ROUND函数是将一个数字小数部分四舍五入。函数有两个参数:需要计算数字和需要四舍五入小数位数。...这两个函数第一个参数是需要查找值,如果在表格查找到这个值,则返回一个不同值。 具体来说,HLOOKUP返回值与需要查找同一列上,而VLOOKUP返回值与需要查找同一行上。...数字的话就有点麻烦了,如15是一个数字,但十五则是汉字。函数ISNUMBER判断单元格值是否是数字返回TRUE或FALSE。

1.6K80

day 15 - 1 内置函数

id()  hash() #id(o) o 是参数,返回一个变量内存地址 #hash() - 对于相同可 hash 数据 hash 值一次程序执行过程总是不变 # - 字典寻址方式...# eval 有返回值 —— 有结果简单计算 # exec 没有返回值 —— 简单流程控制 # eval 只能用在你明确知道你要执行代码是什么,因为有很大安全隐患 #exec 举例说明...+ 15j # j 是 python 虚数单位 # 浮点数(有限循环小数,无限循环小数) !...* 10 #在这个过程中小数点是浮动所以叫做浮点数 f = 1.781326913750135970 #当小数很长是 会出现不准确情况 print(f) #因为十进制小数转为二进制小数时会出现微弱偏差...求和 #min 计算最小值 #max 计算最大值 #可以传两个值 ret = sum([1,2,3,4,5,6]) print(ret) ret = sum([1,2,3,4,5,6

37110

BC数学函数:PHP处理有关钱数等浮点数计算时高精确度函数库

商城类项目当中,避免不了钱数计算,也就会出现所谓浮点数精度问题,前两天阅文小哥哥面试我时候就问到了这个,Mysql怎么去存钱数?PHP又该怎么处理浮点数?...在数据库去存这些精确数值时候,我们会使用decimal去存储 我们使用PHP对浮点数进行加减乘除计算时候,有时会遇到一些计算结果错误问题,比如这样: <?...| 风雪之隅 PHP怎么去确保精确数值?...,测试一下bcmul,2个任意精度数字乘法计算 var_dump(bcmul('0.58', '100')); 这样就会输出string(2) "58",BC系列函数返回结果为字符串类型,但是结果也是准确...对于第三个参数:scale,用于设置结果小数点后小数位数 var_dump(bcmul('1.34747474747', '35', 3)); 输出string(6) "47.161",保留3位小数

1.3K20

【基础教程】Python算术运算符及用法详解

(只保留商整数部分) 7 // 2 3 % 取余,即返回除法余数 7 % 2 1 ** 幂运算/次方运算,即返回 x y 次方 2 ** 4 16,即 24 接下来将对表 1 各个算术运算符用法逐一讲解...("sum1=%d, sum2=%.2f" % (sum1, sum2) ) 运行结果: sum1=107, sum2=22.50 拼接字符串 当+用于数字时表示加法,但是当+用于字符串时,它还有拼接字符串...(str1 * 4) 运行结果: hello hello hello hello / 和 // 除法运算符 Python 支持/和//两个除法运算符,但它们之间是有区别的: /表示普通除法,使用它计算出来结果和数学计算结果相同...某些编程语言中,除以 0 结果是无穷大(包括正无穷大和负无穷大)。...换句话说,求余结果正负和第一个数字没有关系,只由第二个数字决定。 %两边数字都是整数时,求余结果也是整数;但是只要有一个数字小数,求余结果就是小数

77820

第2章:循环结构程序设计

顺序结构程序自上到下只执行 一遍,而分支结构甚至有些语句可能一遍都执行不了。换句话说,为了让计算机执行大量 操作,必须编写大量语句。能不能只编写少量语句,就让计算机做大量工作?...= 0.3时,就是无限循环.显然,程序,这种不确定错误是不应该存在, 定义循环变量时,尽量采用int型及整数加减 */ } 程序2-2 输出所有形如aabb4位完全平方数(即前两位数字相等,...函数floor(x)返回不超过x最大整数。 程序2-2完整代码 7744问题(1) //输出所有形如aabb4位完全平方数(即前两位数字相等,后两位数字也相等)。...,直到最后一项小于10−6 本题也是重复计算,因此可以用循环实现。但不同是,只有算完一 项之后才知道它是否小于10-6。也就是说,循环终止判断是计算之后,而不是计算之前。...题目说了n=0为输入标记,为什么还要判断scanf返回?答案是为了鲁棒性(robustness)。 算法竞赛题目的输入输出是人设计,难免会出错。

1.4K10

python实现将字符串数字提取出来然后求和

因工作原因,很久没有学习python知识了,感觉都快忘记了,前天看到一个练习题,如何将字符串数字提取出来,然后求和?下面我来解释一下如何通过python代码来实现。...将其中所有数字提取出来然后求和 思考: 1、字符串包含了字母和数字小数点,怎么取出来比较? 2、小数点连续有很多个时候怎么处理? 3、最后取出来数该怎么求和?...sum = sum+float(number.strip(".")) print(sum) 大致流程是这样: 先定义好空对象,用于存放取出来数字,和是否是数字小数点,然后通过取出来数字进入循环里面判断属于什么...其实不难,但要心细,考虑到多种场景 补充知识:python实现计算字符串整数总和 题目描述:随便输入一串字符串 例如: 输入: ‘ad23dsf34#’ 目的:计算 23+34 和 输出...: 57 ''' @destination 计算字符串整数和 method:将字符串字母同意替换成一个字符然后分隔就可以得到整数 这里面用到isdigit函数是判断字符串是否是数字 ''' def

2.9K20

小小 float,藏着大大学问

而负数就比较特殊了点,负数计算是以「补码」表示,所谓补码就是把正数二进制全部取反再加 1,比如 -1 二进制是把数字 1 二进制取反后再加 1,如下图: ?...既然提到了科学计数法,我再帮大家复习一下,比如有个很大十进制数 1230000,我们可以也可以表示成 1.23 x 10^6,这种方式就称为科学记数法,该方法小数点左边只有一个数字,而且把这种整数部分没有前导...算指数时候,你可能会有疑问为什么要加上偏移量?...1,那就可以不用存起来了,于是就让 23 位尾数只存储小数部分,电路计算时会自动把这个 1 加上,这样就可以节约 1 位空间,尾数就能多存一位小数,相应精度就更高了一点。...所以,你会看到计算 0.1 + 0.2 并不等于完整 0.3,这主要是因为有的小数无法可以用「完整」二进制来表示,所以计算机里只能采用近似数方式来保存,那两个近似数相加,得到必然也是一个近似数

1.7K20

pythonround函数精度保留方法---四舍六入五成双

参考链接: Python精度处理 当我们利用python进行数据计算时,通常会对浮点数保留相应位数,这时候就会用到round函数,相信各位朋友进行使用时会遇到各种问题,关于round函数保留精度...这是因为python对于小数处理方法造成。  为了验证python中小数存储方式,做下面输入:  看到这里,大概清楚了吧?...原来输入0.1时候,python内部对应输入是一个有着多个小数位,数字!你要是问我具体位数是多少个,我会告诉你是55个,那么这个小数究竟是怎么来? ...将小数位扩大1055次方以后,发现原来当我们输入0.1时候,python内部是这么一大串数字。  3、为什么python中使用round(1.15)会是1.1? ...如果说非要进行四舍五入,就要用到decimal模块,进行下面处理以后就可以得到  写在最后:  python对于小数处理可以说是非常谨慎了,所以我们进行小数点保留问题时,除非特殊需求,否则直接使用

1.7K00

初中级前端必须要知道JS数据类型

想一个问题为什么引用类型值要存储到堆内存?能不能存到栈内存?...null JavaScript 自成一种原始类型,只有一个值 null,表示无、空、值未知等特殊值。...第一个点表示小数点,第二个才是调用方法。点符号首先会被认为是数字常量一部分,其次再被认为是属性访问符,如果只写一个点的话,计算机无法知道这个是表示一个小数还是去调用函数。...2) // 空格加上点符号调用 Number 类型除了常规数字之外,还包含了一些特殊数字: NaN:表示不是一个数字,通常是由不合理计算导致结果,比如数字除以字符串 1/'a'; NaN 和任何数进行比较都是返回...|| 操作过程是只有当左边返回 false 时候才会对右边进行求值且将它作为最后结果返回,类似 a?

1.4K20

Python 浮点数精度

计算处理浮点数时会用二进制表示,遇到无法用二进制精确表示十进制浮点数时便会根据精确度位数进行截断,Python 也不例外。...Python 精度 python 默认使用是 double 精度, 浮点数计算机中都是以二进制保存,当有无法精确表示二进制数字时便会产生截断, 这就导致了在有限精度下,电脑为自己把精度范围外小数...可以随时 Python 环境下测试: 0.1+0.2 --> 0.30000000000000004 也就是说,如果你使用很精确浮点数字计算结果作为一个逻辑表达式时,可能会发生问题: 0.1...)_2 本质上就是 0.1 左移一位而已,也是 1100 无限循环小数第 53 位被截断 二者变成整数相加后得到 : 100110011001100110011001100110011001100110011001100111000000000...该数据除以 2^{64} 得到 0.1+0.2 结果,就是 0.30000000000000004 以上流程基本就是 Python 内部计算 0.1+0.2 时过程,其余语言也一样,这是由无限循环小数难以精确表示导致

1.8K40

数值问题

数值问题 计算机里面关于数值处理自有一套体系理论,与现实生活我们所习惯使用不太一样。如果对其不了解,使用计算过程便可能发生一些意想不到错误。...此函数设想 str1 长时返回 1,否则返回 0;但实际上只有 str1 和 str2 长度相等时会返回 0,其他时候都返回1; 问题就出在函数 strlen() 返回值是 size_t,即 unsigned...也就是说比较是按照无符号数来比较,无符号数永远是大于等于 0 ,所以只有两个串儿长度相等时会使左边式子等于 0,其他时候左边结果机器数中肯定有非 0 位,那么按无符号数解释就会大于0,也就返回1了...为什么移位来实现除法是向下舍入,正数应该很好理解,右移之后丢掉移出小数部分,数值自然变小了。如果是负数,右移之后丢掉小数部分数值不应该变大吗?...这个数可以十进制下来理解,比如移动一位也就是一位小数情况下,-2.1,-2.9都要舍入到 -2,应该怎么操作

16300

二进制那些事

逻辑右移和算术右移 介绍完补数后,让我们返回到右移这个话题,右移之后最高位有补0和补1两种情况。当二进制数值表示图形模式而非数值时,移位后最高位补0,这是逻辑右移。...需要注意只有右移时才区分逻辑移位和算术移位。 二进制数表示小数 通过上述介绍,我们对整数二进制表示方式做了说明。...由于计算机内部所有信息都是以二进制数形式来处理,因此在这一点上,整数和小数并无差别。不过,使用二进制数表示整数和小数方法却有很大不同。...那么,计算机实际上是以什么样表现形式来处理小数? 目前,计算机提供了单精度浮点数和双精度浮点数来表示小数形式。单精度浮点数用32位表示全体小数,而双精度浮点数用64位表示。...}} 如何避免计算计算出错 我们知道,无论是用纸面二进制还是浮点数表示小数,都存在计算出错可能性,那么我们该如何避免这种问题

73680

带你学MySQL系列 | 这份MySQL函数大全,真的超有用!

操作如下: 6)instr(str,要查找子串):返回子串第一次出现索引,如果找不到,返回0; 当查找子串存在于字符串返回该子串字符串【第一次】出现索引。...(天花板函数) 天花板函数,excel,python均存在这个函数。你就想象一下你家天花板,把这个数字丢到天花板上,求是大于等于这个数字最小整数。...操作如下: 3)floor(x):向下取整,返回<=该参数最大整数。(地板函数) 地板函数:excel,python均存在这个函数。...()函数和avg()函数:传入整型/小数类型才有意义; 结论如下: sum()函数和avg()函数对于字符串类型、日期/时间类型计算都没有太大意义。...③ max()函数和min()函数:传入整型/小数类型、日期/时间类型意义较大; 结论如下: max()和min()传入是"整型/小数类型",计算是数值最大值和最小值。

1.5K40

python基础——输入与输出【input 和 print】

print(f"{num:+.2f}") # 显示正负号和小数 print(f"{num:#.2f}") # 显示十六进制表示 这些格式化方法都可以用来print()函数输出格式化文本。...}") 运行时: 屏幕就会将我们输入prompt参数信息显示出来,再等待我们输入 正常输入后运行结果: 3,返回值注意 input() 函数总是返回一个字符串,如果我们输入了数字,并且想对输入数字进行数学计算...) # 计算sum = num1 + num2 # 输出结果 print("结果是:", sum) 运行结果: 还需注意是:如果我们输入内容是形似浮点数,如:1.2、2.2这类。...我们又希望将他们强制类型转换成整型再计算,则我们需要先将它们转换成浮点数类型,然后再转换为整型类型 (因为这种带小数字符串没有办法直接转换成整型) 具体方法: # 获取第一个数字 num1 = int...(float((input("请输入第一个数字:")))) # 获取第二个数字 num2 = int(float((input("请输入第一个数字:")))) # 计算sum = num1 +

12310

preview和response值不一样

前段时间开发过程遇到一个奇怪 Bug。 服务端数据正常,前端页面渲染代码正常情况下,浏览器页面渲染出内容却不一样。 经过一番定位,最终 Chrome 浏览器控制台找到了线索。...根本原因是:JavaScript Number 类型处理 Long 型数值时候,超过了一定限制之后就会出现精度丢失情况。...那么 Javascript 为什么会出现 Long 类型数值精度问题?...所以,JavaScript 数值类型精度是有限,内部只有一种数字类型 Number。 所有数字都是采用 IEEE 754 标准定义双精度 64 位格式存储,即使整数也是如此。...,如果有数字超过了这个安全数字范围,则就会出现计算不准确问题。

4.1K40

Django篇(二)

IntegerField: 整数字段 DecimalField(): 浮点数,参数max_digits表示允许最多位数, decimal_places表示小数位数 FloatField; 浮点数,参数和上面的一样...更多模型字段,请参考Django官方文档。写明明白白。 查询 我们Django通过操作模型类去做增删改查,sql语句那么多,我们同样可以进行增删改查。 其中最复杂也就是查询了。...查询函数 我们Django通过:模型类.objects属性调用以下函数来进行查询 get: 返回满足条件一条数据,有且只能有一条,查询出多条会报异常。 查询不到数据也会报异常。...首先我们需要导入Q模块: from django.db.models import Q Q实例: 实例之前,Filter是可以进行and操作,但是不能进行or操作。...mysql中有sum,count,avg,max,mix等聚合函数, 我们操作模型同样可以达到效果: 导入聚合类模块 from django.db.models import Sum,Avg,Count

1.3K20
领券