[
https://issues.apache.org/jira/browse/HIVE-4523?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14167171#comment-14167171
]
Xuefu Zhang commented on HIVE-4523:
-----------------------------------
[~wzc1989], thanks for the explanation. I'm not sure whether rount() returns
float or double is related to your problem, as I understand sum() will return
double. You can cast result from round() to double if that's what you need. For
serious precision/scale control, use decimal instead.
If you need to alter behavior, you need to take a look at GenericUDFRound and
change the return type to double for float input. I expect it's quite
straightforward.
> round() function with specified decimal places not consistent with mysql
> -------------------------------------------------------------------------
>
> Key: HIVE-4523
> URL: https://issues.apache.org/jira/browse/HIVE-4523
> Project: Hive
> Issue Type: Improvement
> Components: UDF
> Affects Versions: 0.7.1
> Reporter: Fred Desing
> Assignee: Xuefu Zhang
> Priority: Minor
> Labels: TODOC13
> Fix For: 0.13.0
>
> Attachments: HIVE-4523.1.patch, HIVE-4523.2.patch, HIVE-4523.3.patch,
> HIVE-4523.4.patch, HIVE-4523.5.patch, HIVE-4523.6.patch, HIVE-4523.7.patch,
> HIVE-4523.8.patch, HIVE-4523.patch
>
>
> // hive
> hive> select round(150.000, 2) from temp limit 1;
> 150.0
> hive> select round(150, 2) from temp limit 1;
> 150.0
> // mysql
> mysql> select round(150.000, 2) from DUAL limit 1;
> round(150.000, 2)
> 150.00
> mysql> select round(150, 2) from DUAL limit 1;
> round(150, 2)
> 150
> http://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html#function_round
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)