首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当min和max值为正时,为什么rand()会返回负值?

当min和max值为正时,为什么rand()会返回负值?
EN

Stack Overflow用户
提问于 2009-10-19 09:46:49
回答 1查看 4.2K关注 0票数 2

我有一段简单的PHP代码,需要创建一个随机数。然而,即使输入总是正的,它有时也会返回负的输出。

下面是我的调试代码:

代码语言:javascript
复制
$debt = rand($this->gdp * 0.02, $this->gdp * 0.17);
echo "<p>GDP: ".$this->gdp." rand(".$this->gdp * 0.02."  , ".$this->gdp * 0.17.") = <strong>".$debt."</strong></p>";

下面是一个输出示例:

代码语言:javascript
复制
GDP: 219254674605 rand(4385093492.1 , 37273294682.85) = 75276999

GDP: 345015694865 rand(6900313897.3 , 58652668127.05) = -1636353016

GDP: 90445390920 rand(1808907818.4 , 15375716456.4) = -165604705

GDP: 3412849650 rand(68256993 , 580184440.5) = 347516196

GDP: 2939111315 rand(58782226.3 , 499648923.55) = 119181875

GDP: 26369065 rand(527381.3 , 4482741.05) = 3632416

GDP: 215838135 rand(4316762.7 , 36692482.95) = 28784811

GDP: 511763530 rand(10235270.6 , 86999800.1) = 39954394

GDP: 42416245 rand(848324.9 , 7210761.65) = 3974882

GDP: 75090235 rand(1501804.7 , 12765339.95) = 5201966

那么,为什么有两个正数的rand()会产生负回报呢?

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2009-10-19 09:51:17

Rand接受参数,并返回integers。整数(PHP中)的最大范围通常为2**32。

您的双精度参数大于此值,当它们转换为整数时会导致integer overflow

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1587799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档