【发布时间】:2015-09-15 01:19:13
【问题描述】:
我有一个双列类型的表,我正在尝试将其从双精度类型转换为字符串。
但是,当我使用 cast 命令时,它会“巧妙地”将其转换为科学记数法。如下:
select
number,
cast(number as string),
from ...
看起来像
number c1_
9999999902 9.999999902E9
9999999902 9.999999902E9
9999999902 9.999999902E9
9999999902 9.999999902E9
9999999909 9.999999909E9
谁能告诉我如何避免将其转换为科学并保留原始文本?
【问题讨论】:
-
cast(cast(number as BIGINT) as STRING)也许? -
DOUBLE 是邪恶的。无论您使用什么数据库(Hive、Oracle、MySkull 等),它都是邪恶的。对于 DOUBLE,999.99+0.01-1000 不等于 0。仅将其用作最后的手段,当您完全不知道数据的规模和精度时,并提供冗长的代码来处理舍入错误。 ===> 从 Hive 0.13 开始,您终于可以使用 DECIMAL(x,y) 数据类型了 :-)
标签: hive