有bug的isnumeric?

时间:2016-08-29 14:52:37

标签: sql sql-server isnumeric

在SQl Server 2014中执行命令bellow。

$("#domainform").submit(function(){
        event.preventDefault();
        var domains= $('input[name="domains[]"]:checked').map(function(){
                return $(this).val();
            }).get();

        var action= $('input[name="action[]"]').map(function(){
            return $(this).val();
            }).get();

        var period= $('select[name="period[]"]').map(function(){
            return $(this).val();
            }).get();
});

我希望第一个选择返回0

我的解决方案:

   select ISNUMERIC('1E234') -- return 1
   select ISNUMERIC('1E2341') -- return 0

祝你好运!

1 个答案:

答案 0 :(得分:2)

1e234 实际上是一个数字。这是科学记数法,意思是: 1.00×10 234 。 (把它扔进计算器!) 另一个需要强调的例子是 3.1e24 ,等于 3.1×10 24

这就是你得到这个结果的原因:它是正确的(达到一定限度)。

3.1E24 => 3,100,000,000,000,000,000,000,904

 1E234 =>   1,000,000,000,000,000,256,144,
          240,016,312,560,912,656,840,512,
          968,136,864,872,232,424,776,040,
          744,208,304,800,656,032,440,648,
          488,920,616,296,544,576,976,448,
          056,376,040,432,472,424,840,856,
          440,904,776,056,632,368,528,312,
          448,144,432,344,224,424,808,952,
          160,472,416,864,520,520,320,112,
          296,192,360,016,000,088,968

1E2341 => too big to calculate!!!

您的解决方案存在的问题是,有时e也用于计算机科学中的数字符号,因此必须将电子符号作为工作号码考虑在内。