2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 * Created on May 15, 2005
21 package org
.apache
.poi
.hssf
.record
.formula
.functions
;
23 import org
.apache
.poi
.hssf
.record
.formula
.eval
.BlankEval
;
24 import org
.apache
.poi
.hssf
.record
.formula
.eval
.ErrorEval
;
25 import org
.apache
.poi
.hssf
.record
.formula
.eval
.Eval
;
26 import org
.apache
.poi
.hssf
.record
.formula
.eval
.NumberEval
;
27 import org
.apache
.poi
.hssf
.record
.formula
.eval
.NumericValueEval
;
28 import org
.apache
.poi
.hssf
.record
.formula
.eval
.ValueEval
;
31 * @author Amol S. Deshmukh < amolweb at ya hoo dot com >
34 public class Floor
extends NumericFunction
{
36 public Eval
evaluate(Eval
[] operands
, int srcRow
, short srcCol
) {
39 ValueEval retval
= null;
41 switch (operands
.length
) {
43 retval
= ErrorEval
.VALUE_INVALID
;
46 ValueEval ve
= singleOperandEvaluate(operands
[0], srcRow
, srcCol
);
47 if (ve
instanceof NumericValueEval
) {
48 NumericValueEval ne
= (NumericValueEval
) ve
;
49 d0
= ne
.getNumberValue();
51 else if (ve
instanceof BlankEval
) {
55 retval
= ErrorEval
.NUM_ERROR
;
59 ve
= singleOperandEvaluate(operands
[1], srcRow
, srcCol
);
60 if (ve
instanceof NumericValueEval
) {
61 NumericValueEval ne
= (NumericValueEval
) ve
;
62 d1
= ne
.getNumberValue();
64 else if (ve
instanceof BlankEval
) {
68 retval
= ErrorEval
.NUM_ERROR
;
74 double d
= MathX
.floor(d0
, d1
);
75 retval
= (Double
.isNaN(d
) || Double
.isInfinite(d
))
76 ?
(ValueEval
) ErrorEval
.NUM_ERROR