PHP-整型浮点型

1. 不同进制数表示

十六进制:0x或0X开头
十进制: 1-9开头
八进制:0开头
2进制:0b开头

PHP-整型浮点型_第1张图片
官方说明

2. 字节数

与平台有关,64位机器就是64位,32位操作系统就是32位,PHP7之前,windows只能是32bit;位数通过PHP_INT_SIZE设置,最大值使用常量PHP_INT_MAX (5.0.4), 最小值 PHP_INT_MIN(7.0.0)

3.类型转换

1. float和double 的存储

PHP-整型浮点型_第2张图片
示例一

所以,关于整数部分在 确保精度的范围内:
int(假设为32位)能表示的最大范围为 -2^31 ~ 2^31 - 1;
float能表示的最大的最大的整数范围是: -2^24 ~ 2^24;
double能表示的最大的最大的整数范围是: -2^53 ~ 2^53;
所以, 当一个非常大的float数转为为32位整形时可能会丢失精度,即使float可以表示很大范围的整数。

2. 浮点数精度问题
详细参考:http://floating-point-gui.de/

PHP-整型浮点型_第3张图片
示例

floor((0.1 + 0.7) * 10)  // 输出7,因为内部存储类似于7.9999999999999991118....

关于浮点型的使用

  • 小数的随后一位不可靠
  • 不要使用小数来做相等比较

3. php强制类型转化

(int) True    //1;
(int) False   //0;
(int) Array() //0;
(int) Array('1', 'b') //1;

float round(float $val, int $precise)

PHP-整型浮点型_第4张图片
官方例子

你可能感兴趣的:(PHP-整型浮点型)