Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server 2008中的算术溢出w/bigints_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server SQL Server 2008中的算术溢出w/bigints

Sql server SQL Server 2008中的算术溢出w/bigints,sql-server,sql-server-2008,Sql Server,Sql Server 2008,在SQLServer2008中转换为bigint时,我遇到算术溢出问题。下面的内容让我很困惑 这项工作: select 58356453 * 228204732751 答复:13317218761161292203 但是,所有其他涉及显式转换的尝试都失败了 select convert(bigint, 58356453 * 228204732751) 结果:算术溢出 begin declare @key bigint = 58356453, @workingVal

在SQLServer2008中转换为bigint时,我遇到算术溢出问题。下面的内容让我很困惑

这项工作:

select 58356453 * 228204732751
答复:13317218761161292203

但是,所有其他涉及显式转换的尝试都失败了

select convert(bigint, 58356453 * 228204732751)
结果:算术溢出

begin 
    declare @key bigint = 58356453,
        @workingVal bigint,
        @primeMultiplier1 bigint = 228204732751;
    set @workingVal = @key * @primeMultiplier1;
end;
结果:算术溢出

begin 
    declare @key bigint = 58356453,
        @workingVal bigint,
        @primeMultiplier1 bigint = 228204732751;
    set @workingVal = @key * @primeMultiplier1;
end;
我错过了什么?我还尝试了“cast(BigNumber作为bigint)”(不要认为它与convert有什么不同),以及算术运算前后的各种转换组合


这是在Windows Server 2008 x64上,bigint的最大值为

你回来了

13317218761161292203

我建议将小数点转换为具有足够精度的小数点。

您应该使用

我尝试了选择convert(bigint,58356453)*convert(bigint,228204732751),但出现了相同的错误+1。选择(58356453*228204732751)-9223372036854775807=4093846724306516396