查询:
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结果是:
| result | rounded |
----------------------
| 28.595 | 28.59 |四舍五入应该是28.60吗?我该如何实现这一点?
发布于 2020-02-21 15:35:14
你可以说:
I need two decimal places, result should be 28.60
这句话有点模棱两可。值得庆幸的是,您提供的数字澄清了这种情况:
ROUND函数的第二个参数来实现的:ROUND(@a * @b / @c, 1) as rounded,而且...ROUND函数无关,但与格式化函数有关。一个技巧是将其转换为具有所需小数数量的decimal类型:convert(decimal(10,2),ROUND(@a * @b / @c, 1)) as rounded发布于 2020-02-21 15:37:56
我认为您可以使用以下代码
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和结果集将是;
+--------+---------+
| result | rounded |
+--------+---------+
| 28.595 | 28.60 |
+--------+---------+发布于 2020-02-21 15:24:00
不要使用浮点数,而是一些精确的数据类型,比如decimal():
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哪种结果
result rounded
28.595000 28.600000https://stackoverflow.com/questions/60333753
复制相似问题