php - 来自数据库的浮点值不能正确显示 php

标签 php mysql

下面是显示带有数据库条目的选择框的代码。

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']."&nbsp;&nbsp;</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/

相关文章:

php - 简单准备语句中的 MySQL 语法错误?

java - 使用 Hibernate 保存父类历史表中的最后一条记录

php - 带有 omnipay 的 CodeIgniter 自定义值

php - 将数据数组从 PHP 发送到 JavaScript

javascript - 通过网址打开聊天

MySQL :GROUP BY WITH ROLLUP ERROR

mysql - 如何获得mysql分组计数的总和

mysql - SQL:过去7天的总条目,按天分组,如果当天没有条目则将其设置为0

php - Laravel - 如何使用绑定(bind)参数获取查询?

php - 在 Laravel Eloquent 集合的每个元素的开头添加一个项目