You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

NumberEval.java 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  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
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  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.
  16. */
  17. /*
  18. * Created on May 8, 2005
  19. *
  20. */
  21. package org.apache.poi.ss.formula.eval;
  22. import org.apache.poi.ss.formula.ptg.IntPtg;
  23. import org.apache.poi.ss.formula.ptg.NumberPtg;
  24. import org.apache.poi.ss.formula.ptg.Ptg;
  25. import org.apache.poi.ss.util.NumberToTextConverter;
  26. public final class NumberEval implements NumericValueEval, StringValueEval {
  27. public static final NumberEval ZERO = new NumberEval(0);
  28. private final double _value;
  29. private String _stringValue;
  30. public NumberEval(Ptg ptg) {
  31. if (ptg == null) {
  32. throw new IllegalArgumentException("ptg must not be null");
  33. }
  34. if (ptg instanceof IntPtg) {
  35. _value = ((IntPtg) ptg).getValue();
  36. } else if (ptg instanceof NumberPtg) {
  37. _value = ((NumberPtg) ptg).getValue();
  38. } else {
  39. throw new IllegalArgumentException("bad argument type (" + ptg.getClass().getName() + ")");
  40. }
  41. }
  42. public NumberEval(double value) {
  43. _value = value;
  44. }
  45. public double getNumberValue() {
  46. return _value;
  47. }
  48. public String getStringValue() {
  49. if (_stringValue == null) {
  50. _stringValue = NumberToTextConverter.toText(_value);
  51. }
  52. return _stringValue;
  53. }
  54. public final String toString() {
  55. return getClass().getName() + " [" +
  56. getStringValue() +
  57. "]";
  58. }
  59. }