Sql server 2008 r2 SQL Server 2008 R2中的舍入问题

Sql server 2008 r2 SQL Server 2008 R2中的舍入问题,sql-server-2008-r2,Sql Server 2008 R2,谁能告诉我 如何在SQL Server 2008 R2中将7.3050舍入到7.3000 我试过: Select ROUND(7.3050,2) 结果:7.31 但我需要结果:7.30您可以通过以下方式使用楼层功能: FLOOR(7.30502 * 100) / 100 如果可以更改零的数量,将其四舍五入到所需的位数 你得到什么取决于你如何开始。数据类型很重要 create table test ( n decimal(10, 4) not null, r float not n

谁能告诉我

如何在SQL Server 2008 R2中将
7.3050
舍入到
7.3000

我试过:

  Select ROUND(7.3050,2)
结果:
7.31


但我需要结果:
7.30
您可以通过以下方式使用
楼层
功能:

FLOOR(7.30502 * 100) / 100

如果可以更改零的数量,将其四舍五入到所需的位数

你得到什么取决于你如何开始。数据类型很重要

create table test (
  n decimal(10, 4) not null,
  r float not null
  );

insert into test values (7.3050, 7.3050);

select round(n, 2) as n_rounded,
       round(r, 2) as r_rounded
from test;

N_ROUNDED  R_ROUNDED
--
7.31       7.3
你所说的圆也很重要。当您谈论“舍入”7.3050到7.30(假设为十进制数据类型)时,您可能并不是真正在谈论舍入。(我们不能确定)可能是您想要截断到小数点后一位——您想要将7.300到7.309之间的所有值映射到7.3

insert into test values (7.3000, 7.3000);
insert into test values (7.3090, 7.3090);

select round(n, 2, 1) as n_trunc,
       round(r, 2, 1) as r_trunc
from test;

N_TRUNC  R_TRUNC
--
7.3      7.3
7.3      7.29
7.3      7.3

请注意float列的行为。

您可以使用以下查询:

Select ROUND(7.3050,1)

结果是7.3000

您需要将其四舍五入到小数点后一位还是截断到小数点后两位?您可以提供更多示例吗?这真的是截断吗?四舍五入银行家?请尽量把你想要的解释清楚。仅举一个例子通常会导致不同的解释,有些解释比其他解释更愚蠢。7.305是否四舍五入到7.31-您真的要四舍五入还是删除小数点后第二位的所有数字?那么,7.307应该是7.31还是仍然是7.30?你似乎已经对发布的答案做出了几次回应-你是否能够发布更多的示例或更好地准确定义你真正想要的舍入?正如我在前面的评论中所预测的,当您只提供一个您想要的示例时,我们会很困难。感谢您如此快速地给出答复,但当我使用其返回值7.305000时,尽管这是因为
选择CAST(CAST(7.3050作为FLOAT)作为NUMERIC(38,37))==7.30499999999997000000000000000000000
类型很重要只有
7.3050
不能准确地表示在浮点中,结果是与之最接近的浮点值恰好具有较低的值。对于任何其他特定的十进制值,最近的浮点值可能恰好略高于十进制值,因此舍入将发生在另一个方向。感谢您的回复,但我使用的数据类型“decimal”,我无法更改,请您建议其他方式。表达式
round(您的_列,2,1)
给出7.3050的答案。在您澄清您对7.3010和7.3090等值的期望值之前,我们都无法给出更好的答案。你在最初的问题中所说的舍入不是舍入,除非你是在谈论银行家舍入,以我的经验,这是不可能的。