Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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中执行精度大于38的算术运算_Sql Server - Fatal编程技术网

Sql server 在SQL Server中执行精度大于38的算术运算

Sql server 在SQL Server中执行精度大于38的算术运算,sql-server,Sql Server,我想执行如下算术运算: select 99999999999999999999999999999999999999 * 256 但是,这会导致错误 将表达式转换为数据类型numeric时出现算术溢出错误 如何执行返回精度大于38的值的算术运算?您可以使用float-但请先阅读以下优秀答案: 否则,十进制数(38,0)是唯一可以容纳9999的数 declare @x decimal(38,0) = 99999999999999999999999999999999999999; 读取此强制转换

我想执行如下算术运算:

select 99999999999999999999999999999999999999 * 256
但是,这会导致错误

将表达式转换为数据类型numeric时出现算术溢出错误


如何执行返回精度大于38的值的算术运算?

您可以使用float-但请先阅读以下优秀答案:

否则,十进制数(38,0)是唯一可以容纳9999的数

declare @x decimal(38,0) = 99999999999999999999999999999999999999;

读取此强制转换为浮点数据类型
选择强制转换(999999999999999999999999999999999999999999为浮点)*强制转换(256为浮点)
在SQL Server中可以存储的最大数字是
999999999999999999999999999999
带有
十进制(38,0)
9223372036854775807
使用
bigint
。如果您需要处理比这更大的数字,您需要准备好丢失(大量)准确性(通过使用
float
),或者查看另一个乐于处理更大值的应用程序。请举例说明:
STR(999999999999999999999999999999999*256e,50,0)
255999999999999999990000000000000000000
,显示了在切换到二进制浮点时的精度损失。但是如果他们实际需要超过38的精度,
float
没有帮助,因为它只有约15位十进制数字的有效精度。但是,同意,如果他们需要的精度高于38位,则OP需要使用不同的应用程序,因为这超出了SQL Server的能力。在SQL Server中不可能吗?“固定精度和小数位数。使用最大精度时,有效值从-10^38+1到10^38-1。十进制的ISO同义词是dec和dec(p,s).numeric在功能上等同于十进制。“-
declare @x decimal(38,0) = 99999999999999999999999999999999999999;