• SQL Server和C#中无法将小数字符串直接转换为整数类型


    有时候我们会将一个小数字符串转换为整数,例如将"31.0"转换为整数类型,因为这个小数本来就是一个整数,它的小数位为0。

    SQL Server

    如果我们在SQL Server中直接将字符串'31.0'转换为INT类型,会报错:

    DECLARE @text NVARCHAR(50)=N'31.0'
    SELECT CAST(@text AS INT)

    结果如下:

    这时,我们要先把字符串'31.0'转换成一个SQL Server的小数类型(例如,DECIMAL或FLOAT等),再转换为INT类型就不会报错了:

    DECLARE @text NVARCHAR(50)=N'31.0'
    
    SELECT CAST(CAST(@text AS DECIMAL(18,1)) AS INT)
    SELECT CAST(CAST(@text AS FLOAT) AS INT)

    结果如下:

    C#

    同样,如果我们在C#中直接将字符串"31.0"转换为int类型,也会报错:

    using System;
    
    namespace NetCoreConversion
    {
        class Program
        {
            static void Main(string[] args)
            {
                string text = "31.0";
                int integer = Convert.ToInt32(text);
    
                Console.WriteLine("Press any key to end...");
                Console.ReadKey();
            }
        }
    }

    结果如下:

    同样,我们要先把字符串"31.0"转换成一个C#的小数类型(例如,float或decimal等),再转换为int类型就不会报错了:

    using System;
    
    namespace NetCoreConversion
    {
        class Program
        {
            static void Main(string[] args)
            {
                string text = "31.0";
                float floatNumber = Convert.ToSingle(text);
                int integer1 = Convert.ToInt32(floatNumber);
    
                decimal decimalNumber = Convert.ToDecimal(text);
                int integer2 = Convert.ToInt32(decimalNumber);
    
                Console.WriteLine("Press any key to end...");
                Console.ReadKey();
            }
        }
    }

    由此,我们可以发现,很多转换字符串为整数的函数,不允许字符串中出现小数点,所以我们可以先把小数字符串转换为小数类型,再转换为整数类型。其实还有其它的办法,例如可以用各个语言的字符串处理函数,将字符串中小数点和其后面的字符全部截取掉,这样字符串中就只剩下整数位了,转换函数也就不会报错了,处理的方法很多,可以选择合适的方法。

  • 相关阅读:
    面试必备的数据库悲观锁与乐观锁
    5分钟带你读懂事务隔离性与隔离级别
    带你了解数据库中事务的ACID特性
    带你了解数据库中group by的用法
    带你了解数据库中JOIN的用法
    一篇带你读懂TCP之“滑动窗口”协议
    通过“表白”的方式,让我们快速了解网络协议
    聊一聊Iterable与Iterator的那些事!
    一篇让你明白进程与线程之间的区别与联系
    MySQL 索引的增删查
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/12285281.html
Copyright © 2020-2023  润新知