首页 > 后端开发 > 正文

PHP取模的问题(自学PHP,不明白取模是啥意思)

2024-10-16 01:58:19 | 我爱编程网

小编今天整理了一些PHP取模的问题(自学PHP,不明白取模是啥意思)相关内容,希望能够帮到大家。

本文目录一览:

PHP取模的问题(自学PHP,不明白取模是啥意思)

PHP取模的问题

问了问朋友发现一个问题:就是浮点转整型的时候:
<?php
$a = 9.45*100;
var_dump($a);
var_dump(intval($a));

$a = 945*1.00;
var_dump($a);
var_dump(intval($a));
?>
运行结果如下:
float(945) int(944) float(945) int(945)
同是浮点 945 ,一个转成 944 一个转成 955

显然简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999...。

这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333. . .。

所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。
也就是说 9.45*100 类似等于 944.9999

以上解释希望能对你有所帮助。。

PHP取模的问题(自学PHP,不明白取模是啥意思)

自学PHP,不明白取模是啥意思

定义:
给定一个正整数p,任意一个整数n,一定存在等式 :
n = kp + r ;
其中 k、r 是整数,且 0 ≤ r < p,则称 k 为 n 除以 p 的商,r 为 n 除以 p 的余数。
对于正整数 p 和整数 a,b,定义如下运算:
取模运算:a % p(或a mod p),表示a除以p的余数。
模p加法: ,其结果是a+b算术和除以p的余数。
模p减法: ,其结果是a-b算术差除以p的余数。
模p乘法: ,其结果是 a * b算术乘法除以p的余数。
说明:
1. 同余式:正整数a,b对p取模,它们的余数相同,记做 或者a ≡ b (mod p)。
2. n % p 得到结果的正负由被除数n决定,与p无关。例如:7%4 = 3, -7%4 = -3, 7%-4 = 3, -7%-4 = -3。
基本性质

若p|(a-b),则a≡b (% p)。例如 11 ≡ 4 (% 7), 18 ≡ 4(% 7)

(a % p)=(b % p)意味a≡b (% p)

对称性:a≡b (% p)等价于b≡a (% p)

传递性:若a≡b (% p)且b≡c (% p) ,则a≡c (% p)
运算规则
模运算与基本四则运算有些相似,但是除法例外。其规则如下:

(a + b) % p = (a % p + b % p) % p (1)

(a - b) % p = (a % p - b % p) % p (2)

(a * b) % p = (a % p * b % p) % p (3)

a ^ b % p = ((a % p)^b) % p (4)

结合律:

((a+b) % p + c) % p = (a + (b+c) % p) % p (5)
((a*b) % p * c)% p = (a * (b*c) % p) % p (6)

交换律:

(a + b) % p = (b+a) % p (7)
(a * b) % p = (b * a) % p (8)

分配律:

((a +b)% p * c) % p = ((a * c) % p + (b * c) % p) % p (9)
重要定理

若a≡b (% p),则对于任意的c,都有(a + c) ≡ (b + c) (%p);(10)

若a≡b (% p),则对于任意的c,都有(a * c) ≡ (b * c) (%p);(11)

若a≡b (% p),c≡d (% p),则 (a + c) ≡ (b + d) (%p),(a - c) ≡ (b - d) (%p),

(a * c) ≡ (b * d) (%p),(a / c) ≡ (b / d) (%p); (12)

PHP取模的问题(自学PHP,不明白取模是啥意思)

php 常用bc函数

我爱编程网(https://www.52biancheng.com)小编还为大家带来php 常用bc函数的相关内容。

PHP中提供了多个实用的bc函数,以处理高精度数学运算,包括基本的算术运算和数论相关的计算。以下是其中一些关键函数的简介: 我爱编程网



  • bcadd :用于两个任意精度数字的加法计算,提供精确的结果。


  • bcsub :执行减法操作,确保在大数值场景下的准确性。


  • bcmul :执行乘法运算,对于需要高精度乘积的场景非常有用。


  • bcdiv :进行除法计算,支持任意精度的除法运算。


  • bcpow :实现高精度的乘方功能,适用于幂运算的需求。


  • bcmod :提供求余数的功能,对于模运算有重要作用。


  • bcsqrt :用于求解任意精度数字的平方根,解决二次方程求解问题。


  • bccomp :比较两个高精度数字,返回0表示相等,1表示第一个数大,-1表示第二个数大。


  • bcpowmod :数论中的核心函数,用于求高精度数字的乘方并取模。


  • bcscale :设置bc数学函数的默认小数点保留位数,保证精度和效率的平衡。



这些函数在处理需要精确计算的大数值时,确保了PHP程序的可靠性和计算精度。

以上就是我爱编程网小编为大家带来的内容了,想要了解更多相关信息,请关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
标签: PHP
与“PHP取模的问题(自学PHP,不明白取模是啥意思)”相关推荐
thinkphp模块是什么意思?
thinkphp模块是什么意思?

thinkphp模块是什么意思?ThinkPHP是一款基于PHP的开源Web应用框架,整体架构是MVC(Model-View-Controller)模式,能够提高Web应用程序的开发效率和维护性。ThinkPHP内置了许多功能模块,包括但不限于:缓存、验证码、分页、文件上传、表单验证等,这些功能模块可以减少程序员的编码量,使得开发更加轻松。ThinkPHP框架具有可扩展性和可维护性,并对

2024-10-17 22:44:17
php数学函数log log(数学符号)是啥意思
php数学函数log log(数学符号)是啥意思

PHPMathPHPMath函数PHP是一种广泛使用的脚本语言,它在数学计算方面提供了丰富的内置函数。自PHP早期版本开始支持这些数学函数,它们在处理数值操作时非常实用。下面是一些主要的PHP数学函数及其描述:abs():返回数值的绝对值,确保结果是非负。acos():计算给定角度的反余弦值,返回范围在0到π(180度)之间。acosh():计算给

2025-01-24 11:10:43
ThinkPHP5.1模板函数取出是数组,该怎么取出数组的值
ThinkPHP5.1模板函数取出是数组,该怎么取出数组的值

用PHP写函数,比较a,b,c三个数,输出其中最大的一个?echomax(1,3,5,6,7);//7echomax(array(2,4,5));//5-------abc是字符串,没办法比较大小的,如果应要比较也只能把数值给变量,例:$a=10;$b=20;$c=30;echomax($a,$b,$c);//说白了这比较的还是10,20,30。PHP网页模

2024-09-06 18:04:15
如何解决错误模块php5ts.dll的问题
如何解决错误模块php5ts.dll的问题

如何解决错误模块php5ts.dll的问题错误模块php5ts.dll的解决办法:首先将mysql的bin目录从系统环境变量Path中移出或者将“libmysql.dll”从MySql的bin目录中移出;然后重启系统即可。推荐:《PHP视频教程》错误应用程序httpd.exe,错误模块php5ts.dll,错误地址0x0000acca。这个问题是在Windows下配置PHP+A

2024-11-09 03:52:12
帝国CMS中的模板用PHP代码写的 $nid = $GLOBALS[navclassid]; 这句是什么意思
帝国CMS中的模板用PHP代码写的 $nid = $GLOBALS[navclassid]; 这句是什么意思

帝国CMS中的模板用PHP代码写的$nid=$GLOBALS[navclassid];这句是什么意思该变量是当前栏目id,可以用$navclassid或$GLOBALS[navclassid]都可以。$GLOBALS是php中的超全局变量,你在页面中var_dump输出看看就知道了。$class_r[$nid]就很明显了,$class_r存着所有栏目的数据,通过栏目id(也就是问题

2024-11-20 15:21:27
thinkphp5 怎么获取当前的模块,控制器和方法名
thinkphp5 怎么获取当前的模块,控制器和方法名

thinkphp5怎么获取当前的模块,控制器和方法名thinkphp5系列需要获取当前的模块、控制器以及方法名称,可以使用自带的Request类,也可以使用request助手函数。接下来举例说明:假设我们现在访问的地址是index/member/add,我们来获取这个地址的模块、控制器、方法名称1、获取模块名:echo"当前模块名称是:".request()-&gt;mo

2024-07-21 11:25:24
exec执行某命令在命令行下没有问题,但是在php中就出错(Web小白的CTF自学笔记(5)——PHP基础)
exec执行某命令在命令行下没有问题,但是在php中就出错(Web小白的CTF自学笔记(5)——PHP基础)

exec执行某命令在命令行下没有问题,但是在php中就出错什么系统?win还是linux?一般是权限的问题,win下可以使用这个函数:functionexec_wincmd($cmd){$WshShell=newCOM("WScript.Shell");$cwd=getcwd();if(strpos($cwd,'')){if($pos=strpos($cmd,''

2024-12-26 22:23:48
PHP问题 如何获取 confirm的返回值?
PHP问题 如何获取 confirm的返回值?

PHP问题如何获取confirm的返回值?&lt;input type="button" value="删除" name="del" id="submit"/&gt;&lt;script&gt;$(function(){    $('#submit').click(function(){        var a = confirm('确认删除?'); //弹出confirm框       

2024-09-04 06:21:29