select CAST((123456789876567898/1000000000000000000) as decimal(38,18));
测试结果
0.123456789876568
预期结果
0.123456789876567898
有人能帮忙吗?
fjnneemd1#
在转换除法结果之前,需要分别转换它们。下面的SQL将给你预期的结果。
select CAST((cast(123456789876567898 as decimal(38,18))/cast(1000000000000000000 as decimal(38,18))) as decimal(38,18));
select CAST((
cast(123456789876567898 as decimal(38,18))/
cast(1000000000000000000 as decimal(38,18))) as decimal(38,18));
原因-当您计算a/b时,配置单元计算并生成双精度结果,当您尝试将其转换为十进制(38,18)时,它会显示截断值。
当您将它们显式转换为十进制时,配置单元以十进制计算所有内容并以十进制生成结果当您再次将结果转换为十进制时,不会发生数据丢失
1条答案
按热度按时间fjnneemd1#
在转换除法结果之前,需要分别转换它们。
下面的SQL将给你预期的结果。
原因-当您计算a/b时,配置单元计算并生成双精度结果,当您尝试将其转换为十进制(38,18)时,它会显示截断值。
当您将它们显式转换为十进制时,配置单元以十进制计算所有内容并以十进制生成结果当您再次将结果转换为十进制时,不会发生数据丢失