0

出于某种原因,我的两列中的一些值有小数位,这是我需要整理的代码中的一个错误,但目前它会导致问题。

如何对带小数位的数字进行四舍五入?

示例数据

# Table: level_3
|---------------------|
| day_start | day_end |
|-----------|---------|
| -123      | 20      |
| -650      | 234     |
| -133.042..| 104.0416|
| -581      | 123     |
|---------------------|

预期产出

# Table: level_3
|---------------------|
| day_start | day_end |
|-----------|---------|
| -123      | 20      |
| -650      | 234     |
| -133      | 104     |
| -581      | 123     |
|---------------------|

编辑:如果它更容易,它不需要四舍五入,只需在句号之后(包括句号)删除任何内容。


编辑 2:我实际上已经解决了我的问题,我只是将结构更改为 INT 并返回它删除了所有小数!但这就是答案,他们会帮助其他人寻找这个!

4

6 回答 6

1

您有 2 个简单的选择:

  • 查询数据库时,使用 ROUND、FLOOR、CEIL mysql 函数对值进行四舍五入

例如:SELECT ROUND(day_start, 0) as day_start, ROUND(day_end, 0) as day_end

  • 查询数据库后使用 php 对值进行四舍五入,使用round,floorceil
于 2013-07-02T08:16:51.070 回答
1

使用 PHPfloor()函数或 mysqlFLOOR()函数

PHP

<?php
    echo floor(44.62);  // will output "44"

MySQL

SELECT FLOOR(44.62);
-> 44

然而

SELECT FLOOR(-44.62);
-> -45

因此,您可以尝试以下操作:

SELECT IF(day_start < 0, CEIL(day_start), FLOOR(day_start)) s, IF(day_end < 0, CEIL(day_end), FLOOR(day_end)) e FROM level_3;
于 2013-07-02T08:16:33.353 回答
0

我实际上已经解决了我的问题,我只是将结构更改为INT并返回,它删除了所有小数!但是感谢您的回答,他们会帮助其他人寻找这个!

于 2013-07-25T15:32:52.810 回答
0

I'd suggest using either number_format or floor

于 2013-07-02T08:15:12.563 回答
0

你可以试试这个(SQL Server)

SELECT CONVERT(INT,Day_Start), CONVERT(INT,Day_End)
于 2013-07-02T08:16:45.490 回答
0

SQL:

SELECT SUBSTRING (notetitle,1,4), SUBSTRING(notedescription,1,3) FROM notes

于 2013-07-02T08:31:25.973 回答