我希望在MySQL数据库中存储偶尔出现的小数值,并在我的PHP应用程序中显示它们。让我解释一下,我所说的偶尔小数值是什么意思。这些数字大多数时候都是整数,例如160或170等等。但有时我需要保存像98.6这样的值。
起初,我在数据库中使用了DECIMAL(4,1)数据类型,但我发现我总是得到像160.0、170.0和98.6等数字。因此,我改为使用FLOAT。在我的本地环境中,我在PHP应用程序和phpMyAdmin上都可以看到数字为160、170、98.6等等。但在生产环境中,我在phpMyAdmin上看到这些数字是160、170、98.6等等。但在PHP应用程序上,我看到的数字是160、170、98.599998474121等等。
现在我需要决定是切换回decimal还是继续使用float。无论哪种方式,我都需要找到一种解决方案来将数字转换为如160、170和98.6等格式。
你认为对于这个目的,使用decimal还是float更好?如果数字的小数部分为零(使用decimal),将数字转换为整数的最佳方法是什么?将类似于98.599998474121的浮点值转换为98.6的最佳方法是什么?
如果数字的小数部分为零,将数字转换为整数的最佳方法是:
```php $number = 98.0; if ($number == (int)$number) { $number = (int)$number; } ```
对于将类似于98.599998474121的浮点值转换为98.6的最佳方法是:
```php $number = 98.599998474121; $number = round($number, 1); ```
至于使用decimal还是float更好,这取决于您的具体需求。如果您需要高精度的小数计算,则应该选择decimal。如果您需要更快的计算速度并且可以接受一定的舍入误差,则应该选择float。
有没有更好的方法?
起初,我在数据库中使用了DECIMAL(4,1)数据类型,但我发现我总是得到像160.0、170.0和98.6等数字。因此,我改为使用FLOAT。在我的本地环境中,我在PHP应用程序和phpMyAdmin上都可以看到数字为160、170、98.6等等。但在生产环境中,我在phpMyAdmin上看到这些数字是160、170、98.6等等。但在PHP应用程序上,我看到的数字是160、170、98.599998474121等等。
现在我需要决定是切换回decimal还是继续使用float。无论哪种方式,我都需要找到一种解决方案来将数字转换为如160、170和98.6等格式。
你认为对于这个目的,使用decimal还是float更好?如果数字的小数部分为零(使用decimal),将数字转换为整数的最佳方法是什么?将类似于98.599998474121的浮点值转换为98.6的最佳方法是什么?
如果数字的小数部分为零,将数字转换为整数的最佳方法是:
```php $number = 98.0; if ($number == (int)$number) { $number = (int)$number; } ```
对于将类似于98.599998474121的浮点值转换为98.6的最佳方法是:
```php $number = 98.599998474121; $number = round($number, 1); ```
至于使用decimal还是float更好,这取决于您的具体需求。如果您需要高精度的小数计算,则应该选择decimal。如果您需要更快的计算速度并且可以接受一定的舍入误差,则应该选择float。
<?php
if (fmod($number, 1) == 0) {
$number = intval($number)
}
有没有更好的方法?
$foo = "105"; echo number_format((float)$foo, 2, '.', ''); // 输出 -> 105.00
- Pratik Joshi