下面是显示带有数据库条目的选择框的代码。
The problem is that values 1.2 and 1.3 in the database display as 1.2000000476837 and 1.2999999523163 even though the other float values display correctly.
如果有任何帮助,我将不胜感激。
<select name="capacity" tabindex="7">
<option value="">Odaberi kapacitet</option>
<?php
$query_select_capacity=$db->prepare("SELECT id_capacity, capacity FROM capacity");
$query_select_capacity->execute();
$result=$query_select_capacity->fetchAll(PDO::FETCH_ASSOC);
foreach($result as $res){
echo "<option value='".$res['id_capacity']."'>".$res['capacity']." </option>";
}
?>
</select>
这是数据库表。
CREATE TABLE IF NOT EXISTS `capacity` (
`id_capacity` int(11) NOT NULL AUTO_INCREMENT,
`capacity` float DEFAULT NULL,
PRIMARY KEY (`id_capacity`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=11 ;
INSERT INTO `capacity` (`id_capacity`, `capacity`) VALUES
(1, NULL),
(6, 1.2),
(7, 1.3),
(8, 1.5),
(9, 2),
(10, 2.5);
最佳答案
您的问题不在于您的代码,而在于您的 PC(以及所有其他个人计算机)保存浮点值的方式。它将值不保存为 1.2,它以简单的方式保存“.”之前的部分。 (在你的例子中是 1),然后它保存 '.' 后面的值。
因此,1/2 + 1/4 + 1/8 +...
所以 0.2
会是
0*1/2 + 0*1/4 + 1*1/8(=0,125 so 0,75 are left)
+ 1*1/16(=0,0625 so 0,0125 are left) + ... and so on
1/
的数量有限,因此您永远无法达到完美值 0.2 或 0.3
希望对您有所帮助。
关于php - 来自数据库的浮点值不能正确显示 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33031142/