如何在SQL中将指数和系数转换为整数值
****更新**** 如何将指数和系数转换为整数?SQL中是否有内置方法如何在SQL中将指数和系数转换为整数值,sql,sql-server,math,scientific-notation,Sql,Sql Server,Math,Scientific Notation,****更新**** 如何将指数和系数转换为整数?SQL中是否有内置方法 这是科学记数法中的值61057747657e+011我想是这样的,但要变成一个整数,我想使用biginger?让我再研究一下 try { Console.WriteLine(Double.Parse("6.1057747657e+011")); } catch (OverflowException) { Console.WriteLine("{0} is outside th
这是科学记数法中的值
61057747657e+011
我想是这样的,但要变成一个整数,我想使用biginger?让我再研究一下
try {
Console.WriteLine(Double.Parse("6.1057747657e+011"));
}
catch (OverflowException) {
Console.WriteLine("{0} is outside the range of the Double type.",
value);
}
下面是不同的答案
“e”或“e”字符,表示该值为
用指数(科学)符号表示。值参数
如果样式中包含
NumberStyles.AllowExponent标志
在你的情况下,你可以这样做
BigInteger value = System.Numerics.BigInteger.Parse("6.1057747657e+011", NumberStyles.Float, CultureInfo.InvariantCulture);
您必须具有.NET Framework 4.5
或更高版本才能使其正常工作
DECLARE @s VARCHAR(25);
DECLARE @i BIGINT;
SET @s = '6.1057747657e+011';
SET @i = CAST(@s as FLOAT(53));
SELECT @i;
结果610577476570
您需要将结果存储为BIGINT,因为该数字对于32位INT来说太大。请注意,正在进行从FLOAT(53)到BIGINT的隐式转换
如果要控制舍入,可以使用ROUND()、FLOOR()或天花()函数。例如:
SET @i = ROUND(CAST(@s as FLOAT(53)), -2);
如果输入字符串可能包含无效数字,则需要添加错误处理
DECLARE @s VARCHAR(25);
DECLARE @i BIGINT;
SET @s = 'rubbish';
BEGIN TRY
SET @i = CAST(@s as FLOAT(53));
SELECT @i;
END TRY
BEGIN CATCH
-- error handling goes here
END CATCH
(在SQL Server 2012上使用T-SQL进行测试。)您有两个整数吗?指数和系数?这是什么意思?整数没有表示法。在将其转换为字符串时,可以使用特定的表示法对其进行格式化,或者在写入整数文本或将字符串解析为整数时,可以使用特定的表示法。你想干什么?这不是解决办法。
DECLARE @s VARCHAR(25);
DECLARE @i BIGINT;
SET @s = 'rubbish';
BEGIN TRY
SET @i = CAST(@s as FLOAT(53));
SELECT @i;
END TRY
BEGIN CATCH
-- error handling goes here
END CATCH