记录下,工作中遇到的坑 ......尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为 1.11e-16。非基本数学运算可能会给出更大误差,并且要考虑到进行复合运算时的误差传递。...bcscale 设置所有bc数学函数的默认小数点保留位数 bcsqrt 任意精度数字的二次方根 常用数值处理方案 舍去法取整(向下取整) echo floor(5.1); //输出:5 echo floor...浮点数类型包括单精度浮点数(float)和双精度浮点数(double)。 同理,不建议使用浮点数类型!!! 浮点数存在误差,当我们使用精度敏感的数据时,应该使用定点数(decimal)进行存储。...小结 通过浮点数精度的问题,了解到浮点数的小数用二进制的表示。 分享了用 PHP 任意精度数学函数,来进行高精度运算。
abs( ) 取绝对值 atan( ) 反正切(返回弧度) angle( ) 返回复数的相位角 atand( ) 反正切(返回度数) mod(x,y) 返回x/y的余数...的机器类型 nargin 函数中参数输入个数 eps 精度容许误差(无穷小) nargout 函数中输出变量个数 flops 浮点运算计数 pi 圆周率...i 复数单元 realmax 最大浮点数值 inf 无穷大 realmin 最小浮点数值 inputname 输入参数名 varargin 函数中输入的可选参数...j 复数单元 varargout 函数中输出的可选参数 附录4.3时间与日期 函数名 功能描述 函数名 功能描述 calender 日历 eomday... round 舍入取整 floor 沿-∞方向取整 rem 求除法的余数 ceil 沿+∞方向取整 sign 符号函数 附录6.5其他特殊数学函数 函数名
首先我们要知道浮点数的表示(IEEE 754): 浮点数, 以64位的长度(双精度)为例,会采用1位符号位(E),11指数位(Q),52位尾数(M)表示(一共64位) 符号位:最高位表示数据的正负,0表示正数...我们来看看小数用二进制怎么表示: 乘2取整,顺序排列,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分,但是像0.57这样的小数像这样一直乘下去...这样,就引出了另一个关键的问题:舍入 对于二进制,待处理部分有没有达到前一位的一半,达到就进位,没达到就舍去。(暂且当作 0 舍 1 入) 双精度浮点数能表示多少精度呢?...半精度(16bit):11 位有效数字 单精度(32bit):24 位有效数字 双精度(64bit):53 位有效数字 四精度(128bit):113 位有效数字 可见, 这个问题的关键点就是: 你看似有穷的小数...bcmul — 将两个高精度数字相乘 bcpow — 求高精度数字乘方 bcpowmod — 求高精度数字乘方求模,数论里非常常用 bcscale — 配置默认小数点位数,相当于就是Linux bc中的
数论与表示函数 math.ceil(x) 返回 x 的向上取整,即大于或等于 x 的最小的整数。如果 x 不是浮点数,委托给 x....3.9 版后已移除: 接受具有整数值的浮点数 (例如 5.0) 的行为已被弃用。 math.floor(x) 返回 x 的向下取整,小于或等于 x 的最大整数。...例如, fmod(-1e-100, 1e100) 是 -1e-100 ,但Python的 -1e-100 % 1e100 的结果是 1e100-1e-100 ,它不能完全表示为浮点数,并且取整为令人惊讶的...math.isqrt(n) 返回非负整数 n 的整数平方根。 这就是对 n 的实际平方根向下取整,或者相当于使得 a² ≤ n 的最大整数 a。...对于某些应用来说,可以更适合取值为使得 n ≤ a² 的最小整数 a ,或者换句话说就是 n 的实际平方根向上取整。 对于正数 n,这可以使用 a = 1 + isqrt(n - 1) 来计算。
— 反双曲正弦 atan2 — 两个参数的反正切 atan — 反正切 atanh — 反双曲正切 base_convert — 在任意进制之间转换数字 bindec — 二进制转换为十进制...ceil — 进一法取整 cos — 余弦 cosh — 双曲余弦 decbin — 十进制转换为二进制 dechex — 十进制转换为十六进制 decoct — 十进制转换为八进制 deg2rad...— 将角度转换为弧度 exp — 计算 e 的指数 expm1 — 返回 exp(number) - 1,甚至当 number 的值接近零也能计算出准确结果 floor — 舍去法取整 fmod...— 返回除法的浮点数余数 getrandmax — 显示随机数最大的可能值 hexdec — 十六进制转换为十进制 hypot — 计算一直角三角形的斜边长度 intdiv — 对除法结果取整...— 指数表达式 rad2deg — 将弧度数转换为相应的角度数 rand — 产生一个随机整数 round — 对浮点数进行四舍五入 sin — 正弦 sinh — 双曲正弦 sqrt —
前言: 这两天一直在做一个商城后台的对账方面的工作,忽然发现C#真的有很多值的学习的东西: 一、C#常用的三种取整方式(主要适用于double、decimal、float这一类型的数据): Math.Round...():为四舍六入五取整 Math.ceilling():为向上取整(只要有小数存在都会加1) Math.Floor():向下取整,有小数都会舍去 二、Decimal、double、float数据类型介绍...初始化方式:decimal myMoney = 300.5m; Double数据类型(双精准浮点型): 保留带符号的 IEEE 64 位 (8 字节) 双精度浮点数,从-1.79769313486231570...双精度数字存储实际数目的近似值。 Double数据类型提供了大量的最大和最小可能大量度。 Double 的默认值为 0。...因此,若要初始化浮点型变量,请使用后缀 f 或 F,如以下示例中所示:float x = 3.5F; 如果不在前面的声明中使用后缀,则会收到编译错误,因为你正尝试将 double 值存储到 float
最大浮点数值 inf 无穷大 realmin 最小浮点数值 inputname 输入参数名 varargin 函数中输入的可选参数 j 复数单元 varargout 函数中输出的可选参数 附录...round 舍入取整 floor 沿-∞方向取整 rem 求除法的余数 ceil 沿+∞方向取整 sign 符号函数 附录6.5其他特殊数学函数 函数名 功能描述 函数名 功能描述 airy...findstr 寻找短串的起始字符下标 findsym 机器确定内存中的符号变量 finverse 符号计算中求反函数 fix 向零取整 flag 红白蓝黑交错色图阵 fliplr 矩阵的左右翻转...flipud 矩阵的上下翻转 flipdim 矩阵沿指定维翻转 floor 向负无穷取整 flops 浮点运算次数 flow Matlab提供的演示数据 fmin 求单变量非线性函数极小值点...odeset 创建或改写 ODE选项构架参数值 ones 全1数组 optimset 创建或改写优化泛函指令的选项参数值 orient 设定图形的排放方式 orth 值空间正交化 P p
循环语句 (4)do...while() 循环语句 (5)continue 结束本次循环语句 (6)break 中止执行switch或循环语句 (7)switch 多分支选择语句...2、复合的赋值运算符 在=之前加上其他运算符。 3、赋值表达式 由赋值运算符将一个变量和一个表达式连接起来的式子。...4、赋值过程中的类型转换 (1)将浮点型数据赋给整型变量时,先对浮点数取整,即舍弃小数部分然后赋予整型变量。 (2)将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。...(3)将一个double型数据赋给float变量时,先将双精度数转换为单精度,存储到float变量的4个字节中。 (4)字符型数据赋给整型变量时,将字符的ASCII代码赋给整型变量。...(5)将一个占字节多的整型数据赋给一个占字节少的整型变量或字符变量时,只将其低字节原封不动地送到被赋值的变量。 5、赋值表达时候和赋值语句 由一个赋值表达式加一个分号组成。
使用php的浮点数转int型时,出现转换结果不符合预期,直接转换出现问题在其他强类型语言中可能会有意识的去规避,而php能从心所欲,反倒会出现这种细节问题。...,对于这个不符合语气的解释: 浮点数的精度 浮点数的精度有限。...尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为 1.11e-16。非基本数学运算可能会给出更大误差,并且要考虑到进行复合运算时的误差传递。...此外,以十进制能够精确表示的有理数如 0.1 或 0.7,无论有多少尾数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式。...所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。
使用php的浮点数转int型时,出现转换结果不符合预期,直接转换出现问题在其他强类型语言中可能会有意识的去规避,而php能从心所欲,反倒会出现这种细节问题。...,对于这个不符合预期的解释: 浮点数的精度 浮点数的精度有限。...尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为 1.11e-16。非基本数学运算可能会给出更大误差,并且要考虑到进行复合运算时的误差传递。...此外,以十进制能够精确表示的有理数如 0.1 或 0.7,无论有多少尾数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式。...所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。
//循环语句 do...while() //循环语句 continue //结束本次循环语句 break //中止执行switch或循环语句 switch //多分支选择语句 return //从函数返回语句...2、复合的赋值运算符 在=之前加上其他运算符。 3、赋值表达式 由赋值运算符将一个变量和一个表达式连接起来的式子。...4、赋值过程中的类型转换 将浮点型数据赋给整型变量时,先对浮点数取整,即舍弃小数部分然后赋予整型变量。 将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。...将一个double型数据赋给float变量时,先将双精度数转换为单精度,存储到float变量的4个字节中。 字符型数据赋给整型变量时,将字符的ASCII代码赋给整型变量。...将一个占字节多的整型数据赋给一个占字节少的整型变量或字符变量时,只将其低字节原封不动地送到被赋值的变量。 5、赋值表达时候和赋值语句 由一个赋值表达式加一个分号组成。
,此时旋转的圆心是文本或图像的中心点; 三、刷新整个转盘的视图,对于继承自View的视图,直接调用postInvalidate方法即可。...Math类是java的数学计算工具类,常用的方法如下所示: 取整与比较函数 random : 取0-1之间的纯小数 abs : 取绝对值 round : 四舍五入取整,返回整型数。...rint : 小数位四舍五入,返回双精度数。 ceil : 向上取整。若是负数,则往数值大的方向取整。 floor : 向下取整。若是负数,则往数值小的方向取整。...max : 取两个数字中的较大值 min : 取两个数字中的较小值 科学计算函数 sqrt : 求平方根 cbrt : 求立方根 exp : 计算e的n次幂 log : 求自然对数值(底数为...用于定义图像矩阵的工具类,常用的方法如下所示: setTranslate : 设置平移参数 setScale : 设置缩放参数 setRotate : 设置旋转参数 setSkew : 设置倾斜参数
浮点数的舍入 任何有效数上的运算结果,通常都存放在较长的寄存器中,当结果被放回浮点格式时,必须将多出来的比特丢弃。...讨论一 单精和双精浮点数的有效数字分别是有存储的23和52个位,加上最左手边没有存储的第1个位,即是24和53个位。...log224=7.22log253=15.95 由以上的计算,单精和双精浮点数可以保证7位和15位十进制有效数字。...这种近似误差不会超过1比特的表示能力,因此(24-1)*std::log10(2)等于6.92,下取整为6,成为std::numeric_limits::digits10以及FLT_DIG的值。...以下的C++程序,概略地展示了单精和双精浮点数的精度。
其中单精度数为 8 位,双精度数为 11 位。以单精度数为例,8 位的指数为可以表达 0 到 255 之间的 255 个指数值。但是,指数可以为正数,也可以为负数。...为了处理负指数的情况,实际的指数值按要求需要加上一个偏差(Bias)值作为保存在指数域中的值,单精度数的偏差值为 127,而双精度数的偏差值为 1023。...图例中的第三个域为尾数域,其中单精度数为 23 位长,双精度数为 52 位长。除了我们将要讲到的某些特殊值外,IEEE 标准要求浮点数必须是规范的。...浮点数与定点数的转换关系可表示为: 例如,浮点数x=0.5,定标Q=15,则定点数xq=L0.5*32768J=16384,式中LJ表示下取整。...反之,一个用Q=15表示的定点数16384,其浮点数为16384 *2^-15=16384/32768=0.5。浮点数转换为定点数时,为了降低截尾误差,在取整前可以先加上0.5。
using ::ceil; //上取整 using ::ceilf; //上取整 using ::ceill; //上取整 using ::cos; //余弦 using ::cosf... using ::floorf; //下取整 using ::floorl; //下取整 using ::fmod; //求余 using ::fmodf; //求余 using :...:fmodl; //求余 using ::frexp; //返回value=x*2n中x的值,n存贮在eptr中 using ::frexpf; //返回value=x*2n中x的值,n存贮在eptr...中 using ::frexpl; //返回value=x*2n中x的值,n存贮在eptr中 using ::ldexp; //返回value*2exp的值 using ::ldexpf;...value分解成尾数和阶 using ::modff; //将双精度数value分解成尾数和阶 using ::modfl; //将双精度数value分解成尾数和阶 using ::pow;
Tau #表示一转中的弧度数,由常量 τ 指定。 # 方法 Abs(Decimal) 返回 Decimal 数字的绝对值。 Abs(Double) 返回双精度浮点数字的绝对值。...Ceiling(Double) 返回大于或等于指定的双精度浮点数的最小整数值。 Clamp(Byte, Byte, Byte) 返回限制在 min 和 max 范围内(含首尾)的 value。...Floor(Decimal) 返回小于或等于指定小数的最大整数值。 Floor(Double) 返回小于或等于指定双精度浮点数的最大整数值。...Max(Double, Double) 返回两个双精度浮点数字中较大的一个。 Max(Int16, Int16) 返回两个 16 位有符号的整数中较大的一个。...Min(Double, Double) 返回两个双精度浮点数字中较小的一个。 Min(Int16, Int16) 返回两个 16 位有符号整数中较小的一个。
Kotlin的基本数据类型跟其他高级语言的分类一样,也包括了整型、长整型、浮点数、双精度、布尔型、字符型这几种常见类型,具体的类型名称说明如下: Int : 整型数,对应Java的int和Integer...Long : 长整型,对应Java的long和Long。 Float : 浮点数,对应Java的float和Float。 Double : 双精度,对应Java的double和Double。...比如声明一个最简单整型变量,按Java的写法是下面这样: int i=0; 倘若按照Java的规则来书写Kotlin代码,就是下面这行代码: Int i=0; 然而Android...Studio立即提示编译不通过,刚开始学Kotlin便掉到坑里,看来要认真对待Kotlin,不能这么轻易让它坑蒙拐骗了。...toFloat : 转换为浮点数。 toDouble : 转换为双精度数。 toChar : 转换为字符。 toString : 转换为字符串。 isNaN : 判断该变量是否为空值。
领取专属 10元无门槛券
手把手带您无忧上云