配置单元仅选择前两位小数

fdbelqdn  于 2021-05-31  发布在  Hadoop
关注(0)|答案(3)|浏览(327)

配置单元仅选择前两位小数。

  1. Input: columnA decimal datatype value is 57.698700000
  2. Expected output should be 57.69

note:output should 不能四舍五入到下一个最高或最低值
目前我正在使用trunc(可乐,2),这是给我的输出为57.69000000000,但我的预期输出应该是57.69请帮助我在这之前谢谢

bq9c1y66

bq9c1y661#

这是自0.14版本以来配置单元的默认功能。根据刻度,它将考虑周期后的数字。如果你可以有规模为2,那么你的问题将得到解决。
有关更多详细信息,请查看此配置单元增强功能。
https://issues.apache.org/jira/browse/hive-7373
十进制(5,4)中的0将是0
十进制(5,4)中的0.0将是0.0
小数点(5,4)中的0.00将是0.00
十进制(5,4)中的0.00000000将是0.0000

jc3wubiy

jc3wubiy2#

这里有两种方法:

  1. round(col - 0.005, 2)
  2. floor(col * 100) / 100.0
chy5wohz

chy5wohz3#

你可以用 ROUND 在Hive中起作用。
正如hive文档所说:

  1. round(DOUBLE a, INT d)
  2. Returns a rounded to d decimal places.

例如:

  1. SELECT ROUND(58.3265487, 2) AS num_round;
  2. +------------+--+
  3. | num_round |
  4. +------------+--+
  5. | 58.33 |
  6. +------------+--+
  7. SELECT ROUND(58.3265487, 3) AS num_round;
  8. +------------+--+
  9. | num_round |
  10. +------------+--+
  11. | 58.327 |
  12. +------------+--+

或者,如果要精确到小数点,可以尝试以下操作:

  1. SELECT CAST(CONCAT(SPLIT(71.42857142857143, '\\.')[0],'.', SUBSTRING(SPLIT(71.42857142857143, '\\.')[1], 1, 2)) AS DECIMAL(10,2)) AS number_rounded;
  2. +-----------------+--+
  3. | number_rounded |
  4. +-----------------+--+
  5. | 71.42 |
  6. +-----------------+--+
展开查看全部

相关问题