我有一个包含浮点字段('ferate')的数据库表,我将长度设置为 15,精度设置为 2。每当我执行这样的 select 语句时,它都会返回一个整数。我想将“ferate”检索为带 2 位小数的 float 。 “ferate”的默认值应为 44.86,但我得到的是 45。
public function get_defaultrates () {
$defaultfuelrates = NULL; // array
if (!$this->dbconn->connect_errno) {
$stmt = $this->dbconn->prepare (
"SELECT * FROM dffuelexciserates"
);
$stmt->execute();
if ($stmt->errno === 0) {
$result = $stmt->get_result();
if ($result->num_rows >= 1) {
$defaultfuelrates = array ();
while ($row = $result->fetch_assoc()){
var_dump ($row);
$tr_dffuelexciserates = new tr_dffuelexciserates ();
$tr_dffuelexciserates->dfferid = $row['dfferid'];
$tr_dffuelexciserates->ftid = $row['ftid'];
$tr_dffuelexciserates->ferate = $row['ferate'];
array_push ($defaultfuelrates, $tr_dffuelexciserates);
}
}
$result->free();
}
$stmt->close();
}
return $defaultfuelrates;
}
最佳答案
我正在回答我自己的问题。 我已将类型从 FLOAT(15,2) 更改为 DECIMAL(15,2),现在可以使用了。我从这里找到了一个很好的提示:basic link .您可以将 Base 10 数值数据存储到 Float 字段,但我认为在检索 Float 值并使用 mysqlnd 在 php 中将其转换为 Base 10 值时会有副作用。
关于php - 使用 php 5.5.19 和 mysqlnd 执行 select 语句时浮点字段自动舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42483313/