public class DoubleRoundTo
ROUND_TO safely rounds a number to a given precision by using an intermediate
BigDecimal. The too-often seen trick of doing (1000.0 * ROUND(x/1000)) is not
only hard to read but also fails to produce numerically accurate results.
Given a single data atom and number of digits, it returns a double extending to the
given number of decimal places.
The result is a multiple of ten to the power given by the digits argument: a
negative value zeros out correspondingly many places to the left of the
decimal point: ROUND_TO(0.9876543, 3) is 0.988; ROUND_TO(0.9876543, 0) is
1.0; and ROUND_TO(1234.56, -2) is 1200.0.
The optional mode argument specifies the rounding mode;
by default, 'HALF_EVEN' is used.
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.pig.EvalFunc
Allow a UDF to specify type specific implementations of itself. For example,
an implementation of arithmetic sum might have int and float implementations,
since integer arithmetic performs much better than floating point arithmetic. Pig's
typechecker will call this method and using the returned list plus the schema
of the function's input data, decide which implementation of the UDF to use.
A List containing FuncSpec objects representing the EvalFunc class
which can handle the inputs corresponding to the schema in the objects. Each
FuncSpec should be constructed with a schema that describes the input for that
implementation. For example, the sum function above would return two elements in its
FuncSpec(this.getClass().getName(), new Schema(new Schema.FieldSchema(null, DataType.DOUBLE)))
FuncSpec(IntSum.getClass().getName(), new Schema(new Schema.FieldSchema(null, DataType.INTEGER)))
This would indicate that the main implementation is used for doubles, and the special
implementation IntSum is used for ints.
Whether the UDF should be evaluated at compile time if all inputs are constant.
This is applicable for most UDF, however, if a UDF will access hdfs file which
is not available at compile time, it has to be false