首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL简单舍入

SQL简单舍入
EN

Stack Overflow用户
提问于 2020-02-21 15:13:59
回答 4查看 93关注 0票数 3

查询:

代码语言:javascript
运行
复制
declare @a float(10);
declare @b float(10);
declare @c float(10);
set @a = 150.50;
set @b = 19;
set @c = 100;
select @a * @b / @c as result
,ROUND(@a * @b / @c, 2) as rounded

结果是:

代码语言:javascript
运行
复制
| result  | rounded  |    
----------------------
| 28.595  | 28.59    |

四舍五入应该是28.60吗?我该如何实现这一点?

EN

回答 4

Stack Overflow用户

发布于 2020-02-21 15:35:14

你可以说:

I need two decimal places, result should be 28.60

这句话有点模棱两可。值得庆幸的是,您提供的数字澄清了这种情况:

  1. 您想要四舍五入到小数点后一位。这是通过更改ROUND函数的第二个参数来实现的:ROUND(@a * @b / @c, 1) as rounded,而且...
  2. 您想要显示两个十进制数字。这与ROUND函数无关,但与格式化函数有关。一个技巧是将其转换为具有所需小数数量的decimal类型:convert(decimal(10,2),ROUND(@a * @b / @c, 1)) as rounded
票数 1
EN

Stack Overflow用户

发布于 2020-02-21 15:37:56

我认为您可以使用以下代码

代码语言:javascript
运行
复制
declare @a float(10);
declare @b float(10);
declare @c float(10);
set @a = 150.50;
set @b = 19;
set @c = 100;
select @a * @b / @c as result
,FORMAT(ROUND(@a * @b / @c, 1),'N') as rounded

和结果集将是;

代码语言:javascript
运行
复制
+--------+---------+
| result | rounded |
+--------+---------+
| 28.595 |   28.60 |
+--------+---------+
票数 1
EN

Stack Overflow用户

发布于 2020-02-21 15:24:00

不要使用浮点数,而是一些精确的数据类型,比如decimal():

代码语言:javascript
运行
复制
declare @a decimal(19,5);
declare @b decimal(19,5);
declare @c decimal(19,5);
set @a = 150.50;
set @b = 19;
set @c = 100;
select @a * @b / @c as result
,ROUND(@a * @b / @c, 2) as rounded

哪种结果

代码语言:javascript
运行
复制
result  rounded
28.595000   28.600000
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60333753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档