以下是显示带有数据库条目的选择框的代码。
问题是数据库中的值1.2和1.3显示为 1.2000000476837和1.2999999523163,即使其他浮点值显示正确。
我将不胜感激。
<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);
答案 0 :(得分:2)
您的问题不是您的代码,而是您的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的完美值
我希望这会对你有所帮助。
答案 1 :(得分:0)
它显示在这里很好
<select name="capacity" tabindex="7">
<option value="">Odaberi kapacitet</option>
<option value="1"> </option>
<option value="6">1.2 </option>
<option value="7">1.3 </option>
<option value="8">1.5 </option>
<option value="9">2 </option>
<option value="10">2.5 </option>
</select>