我写了以下程序:
class basic {
var $CONNECTION;
function __construct($dbh) {
$this->CONNECTION = $dbh;
}
function simple($id) {
$conn = $this->CONNECTION;
$query = $conn->prepare("SELECT * FROM table WHERE id = $id");
$query->execute();
$row = $query->fetch(PDO::FETCH_OBJ);
$thing = $row->partoftable;
echo $thing;
}
}
//class ends you can use thae class like this
$hostname = 'hostname';
$username = 'db';
$password = 'password';
try {
$dbh = new PDO("mysql:host=$hostname;dbname=db", $username, $password);
}
catch(PDOException $e)
{
echo $e->getMessage();
}
$first = new basic($dbh);
$first->simple(12);
据我们所知,浮点数在内存中的长度至少为4个字节。十进制中的#include <iostream>
int main()
{
int i =123456789;
float f=i;
int j=f;
std::cout<<"j-i ="<<j-i;
}
与十六进制中的123456789
相等,且小于4个字节。所以我为什么在运行上面的程序时,输出不是0x75BCD15
?
0
答案 0 :(得分:12)
因为float
只有23位精度(*)。符号和指数需要其他9位。这意味着在16,777,216之后,你会在“整数”浮动范围内获得漏洞。
(*)实际上是24位,但只需要存储23位;第一位是指数隐含的。