我们有一个sql表,其中有一个用科学记数法存储值的浮点列。我有一个值-1.23E-256。当我运行查询并将查询结果分配给变量时,我将这个浮点值分配给一个小数(15,2)。但由于这种科学表示法,4gl程序中的值不会被赋值给变量并抛出错误。我试图在select查询中使用convert和cast函数将科学记数法更改为十进制,但是抛出了错误"value is very small to stored to a decimal“。
我可以很容易地一眼就把2e15读成“两千万亿”,但是对于2000000000000000,我必须计算零,这需要更长的时间,并且可能导致错误。有没有技术上的原因,为什么这是一个糟糕的想法,或者这一切都是关于类型安全的?对于编译器来说,简单地解析像这样的语句不是很简单吗
作为long x = 2000000000000 //OK for lo