PHP中大整数取余返回负数的问题
来源:互联网 发布:ug8.0编程免费视频教程 编辑:程序博客网 时间:2024/04/28 14:54
我们先来看个例子.
- $res = 16244799483;
- echo $res%9999999;
- // 输出结果为 -5069794, 正确的结果应该是4801107
其实这也算上PHP一个BUG吧.最主要是PHP是个弱类型语言.他内置了机器来判断用户的类型.
但是机器毕竟是机器.也有判断出错的时候.就像上面.所以这时候我们就需要人工干预下.
所以我就想到要用下面的方法.
- $res = floatval(16244799483);
- var_dump($res % 9999999);
我们看到结果还是错误的-5069794.
但是值得注意的是返回是一个int类型的.
详细思考了一下.PHP是这样处理的.
PHP取余默认为整数的.
而且当你定义$res = 16244799483;
其实就已经溢出了.所以要加上强制类型转换.变成float类型.
但是这样还不够.因为%这个取模计算还是针对整数的.
所以我们需要一个函数fmod.是针对float类型的.
所以最终的解决办法为:
- $res = floatval(16244799483);
- var_dump(fmod($res,9999999));
这样我们就解决了这个问题.:)
- PHP中大整数取余返回负数的问题
- PHP整数取余返回负数的问题处理
- 负数取余问题
- php取模为负数的问题
- VC++中对负数取余
- 关于负数取余的讨论
- 对负数取余的操作
- c++对负数取余的判定
- php 取余的两个问题
- PHP中余数、取余的妙用
- 负数取余
- 负数取余运算
- 负数取余
- 负数取余
- js取整数,取余的方法
- C++ int型负数除法取余问题
- leetcode 258---Add Digits, 关于C++中负数取余
- 大整数除法(取模和取余)
- 对句柄本质的探讨
- 如何调试一个DLL项目
- Cocos2d开发资源大集合
- poj 3177(万恶的双连通)
- 二进制串模糊搜索的Java实现
- PHP中大整数取余返回负数的问题
- 文件检索算法
- maven
- win7组件服务COM+应用程序编录错误解决办法
- php解: 2005年百度之星程序设计大赛试题总决赛题目 ------八方块移动游戏
- 转:为什么所有的大惊小怪的链接?
- gooUploader 如何从服务器取数据
- 异常----- 异常来自 HRESULT:0x800736B1
- Debian安装笔记