2016-10-19 45 views

回答

0

如果要截斷最後四位數字並獲取整數,則可以使用內置函數floor(double a)ceiling(double a),具體取決於所需的舍入類型(上或下)。

如果您希望您的雙精度被截斷爲d小數位(並且得到一個double而不是一個整數),則可以使用round(double a, int d)

EDITED

爲了圓而不截斷,您可以使用此

CAST((column * 100) AS int)/100

+0

嗨海梅感謝您的答覆。 –

+0

但是,如果我有一個值35.35623它將四捨五入值爲35.36。我不想把它四捨五入。我希望它被截斷(35.35) –

+0

@AkhilVishwa所以在這種情況下,你會希望結果是'35'? –

0

寫的UDF針對以上問題,在這裏我們可以指定它可以被截斷的字符數

package com.hive.udf.truncate; 
import java.math.BigDecimal; 
import org.apache.hadoop.hive.ql.exec.UDF; 
public class Trunc extends UDF { 
    public double evaluate(double input,int numberOfDecimals){ 
     if (input > 0) { 
     return new BigDecimal(String.valueOf(input)).setScale(numberOfDecimals, BigDecimal.ROUND_FLOOR).doubleValue(); 
      } 
     else { 
     return new BigDecimal(String.valueOf(input)).setScale(numberOfDecimals, BigDecimal.ROUND_CEILING).doubleValue(); 
     } 
    } 
} 
相關問題