浮点数

深入探讨PHP数据类型

梦想与她 提交于 2020-03-29 02:46:15
PHP是一种弱类型语言:PHP的变量没有数据类型的概念,可以存放任意的数据类型。数据本身都是有数据类型的,数据是人为分类的,分成不同的类型。在PHP中所讲的数据类型指的是变量所保存的数据本身。通常都是用变量的数据类型来代替变量所保存的数据的数据类型。 PHP将数据类型分为三大类八小类: 标量数据类型 整型(integer) 浮点型(float) 布尔型(boolean) 字符串型(string) 复合数据类型 数组(array) 对象(object) 特殊数据类型 空类型(NULL) 资源类型(resoure) 标量数据类型 标量又称之为基本数据类型(简单数据类型) 分为四种:整型,浮点型,布尔型和字符串型 整型 php变量保存的数据是整数(有效范围内) $a = 3; // 3是一个整型,$a是一个整型 $b = -3; // 整型包含正和负(有符号) php还能保存其他进制的整型 $num = 123; // 默认是十进制数据 $num = 0123; // 0不代表前缀:告诉服务器当前数据是八进制 $num = 0x123; // 十六进制 php输出给用户默认会全部解析成十进制 // 定义整型变量 $num1 = 123; // 定义整型最大值 $num2 = PHP_INT_MAX; // 定义八进制 $num3 = 0123; // 定义十六进制 $num4 =

常用正则表达式

廉价感情. 提交于 2020-03-28 16:17:43
匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:\n\s*\r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力 匹配首尾空白字符的正则表达式:^\s*|\s*$ 评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 评注:表单验证时很实用 匹配网址URL的正则表达式:[a-zA-z]+://[^\s]* 评注:网上流传的版本功能很有限,上面这个基本可以满足需求 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 评注:表单验证时很实用 匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7} 评注:匹配形式如 0511-4405222 或 021-87888822

为什么计算机编程语言中:0.1+0.2不等于0.3

浪尽此生 提交于 2020-03-27 02:59:36
最近在学习JS过程中发现在计算机JS时发现了一个非常有意思事,0.1+0.2的结果不是0.3,而是0.30000000000000004,但先将小数做乘法然后相加,再除回来就得到想要的0.3 我用python试了一下,发现python也是一样的,结果也是0.30000000000000004。 然后我开始信息搜集,最后找到了答案。想知道这其中的原因,要先理解这些点:二进制、指数形式、IEEE 754标准。 1、二进制 在计算机中所有的数据都是二进制形式存储的,包括整数、浮点数以及其他所有类型的数据。我们将十进制的0.1以及0.2转换成二进制 转换的方法也比较简单,整数转换成二进制:就是用整数除以2然后从下往上取余数,下图用100举例 然后小数转换成二进制就是,小数部分无限乘以2,然后顺序取整。下图用0.375举例 2、指数形式 用指数方式表示可以在有限的空间里存储更大的数值。 所有的十进制数都可以用指数形式表示,成为D=M*10 E ,比如100可以表示为1*10 2 。 二进制数也可以用指数形式表示,B=M*2 E 的形式,这里的E为指数,M为B的位数。比如0.011可以表示为1.1*10 -10 ,这里的“-10”表示的是-2。 3、浮点数IEEE754标准 JavaScript中所有数字包括整数和小数都只有一种类型,是遵循 IEEE 754 标准,使用64位固定长度来表示

帧同步的一些思考(一):浮点数与计算确定性

旧城冷巷雨未停 提交于 2020-03-26 22:05:12
3 月,跳不动了?>>> 历史问题 对浮点数处理,涉及编译器、硬件等对浮点数2进制表示的细节不一致,都有可能,对同一输入的浮点数计算,产生不同的结果。 但是如果你愿意做大量的工作,让你的编译器“严格”符合IEEE 754编译模型以及限制你所使用的浮点数操作的集合,你或许可以让不同的编译器和不同架构的机器能都对浮点数计算得到完全一致的结果。这通常会导致显著降低浮点计算的性能 以上摘至 游戏网络开发(五):浮点数的确定性 代码验证 void myprintf(int i, double valf); double test_sin(double val) { return sin(val); } void test_normal(int count) { double valf = 0.25; myprintf(-1, valf); for (int i = 0; i < count; i++) { valf = test_sin(valf); myprintf(i, valf); } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 上述代码,比如调用 test_normal(20),在window、ubuntu上的结果如下: 可以看到从第14运算开始, 2边的值在内存中已经开始有偏差了。 那么如何保证浮点数计算一致呢?

定点数编程

风流意气都作罢 提交于 2020-03-26 21:33:49
3 月,跳不动了?>>> 翻译自 Fixed Point Arithmetic on the ARM 介绍 定点算法原理 指数变化 加法和减法 乘法 除法 平方根 溢出 实例 信号处理 图像处理 总结 C 程序 使用汇编编程 翻译自 Fixed Point Arithmetic on the ARM 介绍 本应用笔记介绍了如何使用ARM C编译器和ARM或Thumb汇编器编写高效的定点算术代码。 由于ARM内核是一个整数处理器,因此必须使用整数算术模拟所有浮点操作。 使用定点算法而不是浮点数将大大提高许多算法的性能。 本文档包含以下部分: 定点运算原理:描述了定点运算所需的数学概念。 例子:给出了为信号处理和图形处理编写定点代码的例子,这是两种最常见的用途。 C编程:涵盖了在C中实现定点代码的实际细节。示例程序与一组宏定义一起给出。 汇编程序:介绍汇编程序示例。 定点算法原理 在计算算术中,可以使用一对整数(n,e)来近似表示分数:分别为尾数和指数。这对整数表示分数 n 2 − e n2−e 。指数 e 可以被认为是放置二进制小数点之前必须移动 n 的位数。比如 Mantissa (n) Exponent (e) Binary Decimal 01100100 -1 011001000. 200 01100100 0 01100100. 100 01100100 1 0110010

前台金额校验

浪子不回头ぞ 提交于 2020-03-26 15:14:45
3 月,跳不动了?>>> < input type= "text" onblur= " value = value . replace ( /^\D*(\d*(?:\.\d{0,2})?).*$/g , '$1' ) " onkeyup= " value = value . replace ( /^\D*(\d*(?:\.\d{0,2})?).*$/g , '$1' ) " class= "layui-input" value= "" id= "money" name= "money" > var money = document . getElementById ( "money" ). value ; if ( money == null || money == "" || money == undefined ){ layer . msg ( "金额不能为空" ); return false ; } var regPos = /^\d+(\.\d+)?$/ ; //非负浮点数 // var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数 if ( regPos . test ( money )){ } 来源:

自己整理的正则表达式(方便用的时候查看)

蹲街弑〆低调 提交于 2020-03-26 15:02:31
一、整数、字母、时间正则表达式 "^\\d+$"  //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$"  //正整数(0不是正整数,第一位数字为0时也会判断是正整数,如001是) "^[1-9]\d*$"  //正整数(0不是正整数,第一位数字为0时会判断不是正整数,如001不是) "^((-\\d+)|(0+))$"  //非正整数(负整数 + 0) "^-[0-9]*[1-9][0-9]*$"  //负整数 "^-?\\d+$"    //整数 "^\\d+(\\.\\d+)?$"  //非负浮点数(正浮点数 + 0) "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数 "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮点数(负浮点数 + 0) "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数 "^(-?\\d+)(\\.\\d+)?$"  //浮点数 "^[A-Za-z]+$"  //由26个英文字母组成的字符串 "^[A-Z]+$"  /

python内置函数

混江龙づ霸主 提交于 2020-03-26 11:08:49
https://www.runoob.com/python/python-built-in-functions.html 一、数学运算 1、abs(x) 返回一个数的绝对值。参数可以是整数或浮点数。如果参数是复数,则返回其大小 2、 divmod ( a , b ) 以两个(非复数)数字作为参数,在使用整数除法时,返回由它们的商和余数组成的一对数字。对于混合操作数类型,适用二进制算术运算符规则。对于整数,结果与(a // b, a % b)相同,对于浮点数,结果是(q, a % b),其中q通常是数学运算。 3、max max ( iterable , * [, key , default ] ) ; max ( arg1 , arg2 , *args [, key ] ) 返回可迭代或两个或多个参数中最大的项。返回可迭代或两个或多个参数中最大的项。 如果提供了一个位置参数,那么它应该是一个可迭代的。返回iterable中最大的项。如果提供了两个或多个位置参数,则返回最大的位置参数。如果提供了一个位置参数,那么它应该是一个可迭代的。返回iterable中最大的项。如果提供了两个或多个位置参数,则返回最大的位置参数。 有两个可选的关键字参数。key参数指定一个单参数排序函数,类似于list.sort()。默认参数指定了当提供的iterable为空时返回的对象

C++ UE4 指定范围内随机浮点数

别来无恙 提交于 2020-03-26 08:27:06
看网上没有指定范围内随机浮点数的示例教程我这就给补充一下下 毕竟菜鸟窝当年也是对这个不懂查半天资料都无结果的 此次一是做个记录,二是分享一下,说不定有哪位大佬更好的办法给提出我也能更进一步 废话不多说,直接提图,为什么贴图呢 入坑的你确实可以琢磨会会 实现代码: 示例: 结果: 来源: https://www.cnblogs.com/Optimals/p/12571997.html

数据类型拓展

只愿长相守 提交于 2020-03-25 16:18:20
public class Demo03 { public static void main(String[] args) { // 一、整数拓展 进制 二进制0b 十进制 八进制0 十六进制0x int i=10; int i2=010; //八进制0 int i3=0x10; //十六进制0x System.out.println(i); System.out.println(i2); System.out.println(i3); long i4=0x1111111111111111L; System.out.println(i4); System.out.println("=================================================="); // 二、 浮点数拓展 银行业务怎么表示? 钱 System.out.println("=================================================="); //BigDecimal 数学工具类 //----------------------------------------- //float //有限的 离散 舍入误差 大约 接近但不等于 //double //最好完全避免使用浮点数进行比较 //最好完全避免使用浮点数进行比较 /