[ 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)