通过将其中一个操作数转换为非整数来防止整数除法

Preventing integer division by casting one of the operands as non-integer

提问人:Timur Shtatland 提问时间:2/7/2023 更新时间:2/7/2023 访问量:57

问:

我是否必须将分子和分母转换为非整数数据类型以防止整数除法?

PostgreSQL 转换 整数除法

评论

1赞 Adrian Klaver 2/7/2023
老实说,这有多难测试?select 1/2::numeric ; 0.50000000000000000000
0赞 Timur Shtatland 2/7/2023
@AdrianKlaver 测试起来非常容易。更令人惊讶的是,我在“另见”部分下列出的一些赞成答案有一个额外的投射(例如,当 1 个投射就足够时,2 个投射)。这种额外的演员阵容令人困惑,不需要。

答:

0赞 Timur Shtatland 2/7/2023 #1

正如手册所说,转换其中一个操作数(分子或分母)就足以防止整数除法。不需要同时铸造两者

select 2 / 4;                      -- 0
select 2::numeric / 4;             -- 0.50000000000000000000
select 2 / 4::numeric;             -- 0.50000000000000000000
select 2::numeric / 4::numeric;    -- 0.50000000000000000000

另请参见:

它们有 2 个铸件,而只需要 1 个铸件: