From cb4dfced348e12d6c70ae5ada8f981ff29ebde5a Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 20 Jun 2013 13:37:26 +0000 Subject: [PATCH] Patch and unit test from Tim Allen from bug #54686 - Improve how DataFormatter handles fractions git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1494986 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/ss/usermodel/DataFormatter.java | 158 ++------ .../poi/ss/usermodel/FractionFormat.java | 271 +++++++++++++ .../poi/ss/usermodel/TestDataFormatter.java | 16 +- .../poi/ss/usermodel/TestFractionFormat.java | 83 ++++ .../spreadsheet/54686_fraction_formats.txt | 374 ++++++++++++++++++ .../spreadsheet/54686_fraction_formats.xls | Bin 0 -> 180224 bytes 6 files changed, 777 insertions(+), 125 deletions(-) create mode 100644 src/java/org/apache/poi/ss/usermodel/FractionFormat.java create mode 100644 src/testcases/org/apache/poi/ss/usermodel/TestFractionFormat.java create mode 100644 test-data/spreadsheet/54686_fraction_formats.txt create mode 100644 test-data/spreadsheet/54686_fraction_formats.xls diff --git a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java index 930f8b420..46740cc38 100644 --- a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java +++ b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java @@ -28,7 +28,6 @@ import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.text.FieldPosition; import java.text.Format; -import java.text.NumberFormat; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -41,7 +40,6 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.poi.ss.formula.eval.NotImplementedException; /** * DataFormatter contains methods for formatting the value stored in an @@ -100,12 +98,10 @@ import org.apache.poi.ss.formula.eval.NotImplementedException; *
  • simulate Excel's handling of a format string of all # when the value is 0. * Excel will output "", DataFormatter will output "0". * - * @author James May (james dot may at fmr dot com) - * @author Robert Kish - * */ public class DataFormatter { - + private static final String defaultFractionWholePartFormat = "#"; + private static final String defaultFractionFractionPartFormat = "#/##"; /** Pattern to find a number format: "0" or "#" */ private static final Pattern numPattern = Pattern.compile("[0#]+"); @@ -131,6 +127,17 @@ public class DataFormatter { "(\\[MAGENTA\\])|(\\[RED\\])|(\\[WHITE\\])|(\\[YELLOW\\])|" + "(\\[COLOR\\s*\\d\\])|(\\[COLOR\\s*[0-5]\\d\\])", Pattern.CASE_INSENSITIVE); + /** + * A regex to identify a fraction pattern. + * This requires that replaceAll("\\?", "#") has already been called + */ + private static final Pattern fractionPattern = Pattern.compile("(?:([#\\d]+)\\s+)?(#+)\\s*\\/\\s*([#\\d]+)"); + + /** + * A regex to strip junk out of fraction formats + */ + private static final Pattern fractionStripper = Pattern.compile("(\"[^\"]*\")|([^ \\?#\\d\\/]+)"); + /** * Cells formatted with a date or time format and which contain invalid date or time values * show 255 pound signs ("#"). @@ -372,23 +379,26 @@ public class DataFormatter { DateUtil.isValidExcelDate(cellValue)) { return createDateFormat(formatStr, cellValue); } - // Excel supports fractions in format strings, which Java doesn't - if (formatStr.indexOf("#/#") >= 0 || formatStr.indexOf("?/?") >= 0) { - // Strip custom text in quotes and escaped characters for now as it can cause performance problems in fractions. - String strippedFormatStr = formatStr.replaceAll("\\\\ ", " ").replaceAll("\\\\.", "").replaceAll("\"[^\"]*\"", " "); - - boolean ok = true; - for (String part: strippedFormatStr.split(";")) { - int indexOfFraction = indexOfFraction(part); - if (indexOfFraction == -1 || indexOfFraction != lastIndexOfFraction(part)) { - ok = false; - break; - } - } - if (ok) { - return new FractionFormat(strippedFormatStr); + if (formatStr.indexOf("#/") >= 0 || formatStr.indexOf("?/") >= 0) { + String[] chunks = formatStr.split(";"); + for (int i = 0; i < chunks.length; i++){ + String chunk = chunks[i].replaceAll("\\?", "#"); + Matcher matcher = fractionStripper.matcher(chunk); + chunk = matcher.replaceAll(" "); + chunk = chunk.replaceAll(" +", " "); + Matcher fractionMatcher = fractionPattern.matcher(chunk); + //take the first match + if (fractionMatcher.find()){ + String wholePart = (fractionMatcher.group(1) == null) ? "" : defaultFractionWholePartFormat; + return new FractionFormat(wholePart, fractionMatcher.group(3)); + } } + + // Strip custom text in quotes and escaped characters for now as it can cause performance problems in fractions. + //String strippedFormatStr = formatStr.replaceAll("\\\\ ", " ").replaceAll("\\\\.", "").replaceAll("\"[^\"]*\"", " ").replaceAll("\\?", "#"); + //System.out.println("formatStr: "+strippedFormatStr); + return new FractionFormat(defaultFractionWholePartFormat, defaultFractionFractionPartFormat); } if (numPattern.matcher(formatStr).find()) { @@ -402,17 +412,7 @@ public class DataFormatter { return null; } - private int indexOfFraction(String format) { - int i = format.indexOf("#/#"); - int j = format.indexOf("?/?"); - return i == -1 ? j : j == -1 ? i : Math.min(i, j); - } - - private int lastIndexOfFraction(String format) { - int i = format.lastIndexOf("#/#"); - int j = format.lastIndexOf("?/?"); - return i == -1 ? j : j == -1 ? i : Math.max(i, j); - } + private Format createDateFormat(String pFormatStr, double cellValue) { String formatStr = pFormatStr; @@ -786,7 +786,7 @@ public class DataFormatter { * @return a string value of the cell */ public String formatCellValue(Cell cell, FormulaEvaluator evaluator) { - + if (cell == null) { return ""; } @@ -1018,97 +1018,9 @@ public class DataFormatter { } } - /** - * Format class that handles Excel style fractions, such as "# #/#" and "#/###" - */ - @SuppressWarnings("serial") - private static final class FractionFormat extends Format { - private final String str; - public FractionFormat(String s) { - str = s; - } - - public String format(Number num) { - - double doubleValue = num.doubleValue(); - - // Format may be p or p;n or p;n;z (okay we never get a z). - // Fall back to p when n or z is not specified. - String[] formatBits = str.split(";"); - int f = doubleValue > 0.0 ? 0 : doubleValue < 0.0 ? 1 : 2; - String str = (f < formatBits.length) ? formatBits[f] : formatBits[0]; - - double wholePart = Math.floor(Math.abs(doubleValue)); - double decPart = Math.abs(doubleValue) - wholePart; - if (wholePart + decPart == 0) { - return "0"; - } - if (doubleValue < 0.0) { - wholePart *= -1.0; - } - - // Split the format string into decimal and fraction parts - String[] parts = str.replaceAll(" *", " ").split(" "); - String[] fractParts; - if (parts.length == 2) { - fractParts = parts[1].split("/"); - } else { - fractParts = str.split("/"); - } - - // Excel supports both #/# and ?/?, but Java only the former - for (int i=0; i 0; i--) { - for(int i2 = (int)(Math.pow(10, fractPart1Length)- 1d); i2 > 0; i2--){ - if (minVal >= Math.abs((double)i2/(double)i - decPart)) { - currDenom = i; - currNeum = i2; - minVal = Math.abs((double)i2/(double)i - decPart); - } - } - } - NumberFormat neumFormatter = new DecimalFormat(fractParts[0]); - NumberFormat denomFormatter = new DecimalFormat(fractParts[1]); - if (parts.length == 2) { - NumberFormat wholeFormatter = new DecimalFormat(parts[0]); - String result = wholeFormatter.format(wholePart) + " " + neumFormatter.format(currNeum) + "/" + denomFormatter.format(currDenom); - return result; - } else { - String result = neumFormatter.format(currNeum + (currDenom * wholePart)) + "/" + denomFormatter.format(currDenom); - return result; - } - } else { - throw new IllegalArgumentException("Fraction must have 2 parts, found " + fractParts.length + " for fraction format " + this.str); - } - } - - private int countHashes(String format) { - int count = 0; - for (int i=format.length()-1; i >= 0; i--) { - if (format.charAt(i) == '#') { - count++; - } - } - return count; - } - - public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) { - return toAppendTo.append(format((Number)obj)); - } - - public Object parseObject(String source, ParsePosition pos) { - throw new NotImplementedException("Reverse parsing not supported"); - } - } + + /** * Format class that does nothing and always returns a constant string. * diff --git a/src/java/org/apache/poi/ss/usermodel/FractionFormat.java b/src/java/org/apache/poi/ss/usermodel/FractionFormat.java new file mode 100644 index 000000000..1522e7afb --- /dev/null +++ b/src/java/org/apache/poi/ss/usermodel/FractionFormat.java @@ -0,0 +1,271 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.poi.ss.usermodel; +import java.text.FieldPosition; +import java.text.Format; +import java.text.ParsePosition; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.apache.poi.ss.formula.eval.NotImplementedException; + +/** + *

    Format class that handles Excel style fractions, such as "# #/#" and "#/###"

    + * + *

    As of this writing, this is still not 100% accurate, but it does a reasonable job + * of trying to mimic Excel's fraction calculations. It does not currently + * maintain Excel's spacing.

    + * + *

    This class relies on a method lifted nearly verbatim from org.apache.math.fraction. + * If further uses for Commons Math are found, we will consider adding it as a dependency. + * For now, we have in-lined the one method to keep things simple.

    + */ +/* One question remains...is the value of epsilon in calcFractionMaxDenom reasonable? */ +@SuppressWarnings("serial") +public class FractionFormat extends Format { + private final static Pattern DENOM_FORMAT_PATTERN = Pattern.compile("(?:(#+)|(\\d+))"); + + //this was chosen to match the earlier limitation of max denom power + //it can be expanded to get closer to Excel's calculations + //with custom formats # #/######### + //but as of this writing, the numerators and denominators + //with formats of that nature on very small values were quite + //far from Excel's calculations + private final static int MAX_DENOM_POW = 4; + + //there are two options: + //a) an exact denominator is specified in the formatString + //b) the maximum denominator can be calculated from the formatString + private final int exactDenom; + private final int maxDenom; + + private final String wholePartFormatString; + /** + * Single parameter ctor + * @param denomFormatString The format string for the denominator + */ + public FractionFormat(String wholePartFormatString, String denomFormatString) { + this.wholePartFormatString = wholePartFormatString; + //init exactDenom and maxDenom + Matcher m = DENOM_FORMAT_PATTERN.matcher(denomFormatString); + int tmpExact = -1; + int tmpMax = -1; + if (m.find()){ + if (m.group(2) != null){ + try{ + tmpExact = Integer.parseInt(m.group(2)); + //if the denom is 0, fall back to the default: tmpExact=100 + + if (tmpExact == 0){ + tmpExact = -1; + } + } catch (NumberFormatException e){ + //should never happen + } + } else if (m.group(1) != null) { + int len = m.group(1).length(); + len = len > MAX_DENOM_POW ? MAX_DENOM_POW : len; + tmpMax = (int)Math.pow(10, len); + } else { + tmpExact = 100; + } + } + if (tmpExact <= 0 && tmpMax <= 0){ + //use 100 as the default denom if something went horribly wrong + tmpExact = 100; + } + exactDenom = tmpExact; + maxDenom = tmpMax; + } + + public String format(Number num) { + + double doubleValue = num.doubleValue(); + + boolean isNeg = (doubleValue < 0.0f) ? true : false; + double absDoubleValue = Math.abs(doubleValue); + + double wholePart = Math.floor(absDoubleValue); + double decPart = absDoubleValue - wholePart; + if (wholePart + decPart == 0) { + return "0"; + } + + //if the absolute value is smaller than 1 over the exact or maxDenom + //you can stop here and return "0" + if (absDoubleValue < (1/Math.max(exactDenom, maxDenom))){ + return "0"; + } + + //this is necessary to prevent overflow in the maxDenom calculation + //stink1 + if (wholePart+(int)decPart == wholePart+decPart){ + + StringBuilder sb = new StringBuilder(); + if (isNeg){ + sb.append("-"); + } + sb.append(Integer.toString((int)wholePart)); + return sb.toString(); + } + + SimpleFraction fract = null; + try{ + //this should be the case because of the constructor + if (exactDenom > 0){ + fract = calcFractionExactDenom(decPart, exactDenom); + } else { + fract = calcFractionMaxDenom(decPart, maxDenom); + } + } catch (SimpleFractionException e){ + e.printStackTrace(); + return Double.toString(doubleValue); + } + + StringBuilder sb = new StringBuilder(); + + //now format the results + if (isNeg){ + sb.append("-"); + } + + //if whole part has to go into the numerator + if ("".equals(wholePartFormatString)){ + int trueNum = (fract.getDenominator()*(int)wholePart)+fract.getNumerator(); + sb.append(trueNum).append("/").append(fract.getDenominator()); + return sb.toString(); + } + + + //short circuit if fraction is 0 or 1 + if (fract.getNumerator() == 0){ + sb.append(Integer.toString((int)wholePart)); + return sb.toString(); + } else if (fract.getNumerator() == fract.getDenominator()){ + sb.append(Integer.toString((int)wholePart+1)); + return sb.toString(); + } + //as mentioned above, this ignores the exact space formatting in Excel + if (wholePart > 0){ + sb.append(Integer.toString((int)wholePart)).append(" "); + } + sb.append(fract.getNumerator()).append("/").append(fract.getDenominator()); + return sb.toString(); + } + + public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) { + return toAppendTo.append(format((Number)obj)); + } + + public Object parseObject(String source, ParsePosition pos) { + throw new NotImplementedException("Reverse parsing not supported"); + } + + private SimpleFraction calcFractionMaxDenom(double value, int maxDenominator) + throws SimpleFractionException{ + /* + * Lifted wholesale from org.apache.math.fraction.Fraction 2.2 + */ + double epsilon = 0.000000000001f; + int maxIterations = 100; + long overflow = Integer.MAX_VALUE; + double r0 = value; + long a0 = (long)Math.floor(r0); + if (Math.abs(a0) > overflow) { + throw new SimpleFractionException( + String.format("value > Integer.MAX_VALUE: %d.", a0)); + } + + // check for (almost) integer arguments, which should not go + // to iterations. + if (Math.abs(a0 - value) < epsilon) { + return new SimpleFraction((int) a0, 1); + } + + long p0 = 1; + long q0 = 0; + long p1 = a0; + long q1 = 1; + + long p2 = 0; + long q2 = 1; + + int n = 0; + boolean stop = false; + do { + ++n; + double r1 = 1.0 / (r0 - a0); + long a1 = (long)Math.floor(r1); + p2 = (a1 * p1) + p0; + q2 = (a1 * q1) + q0; + if ((Math.abs(p2) > overflow) || (Math.abs(q2) > overflow)) { + throw new SimpleFractionException( + String.format("Greater than overflow in loop %f, %d, %d", value, p2, q2)); + } + + double convergent = (double)p2 / (double)q2; + if (n < maxIterations && Math.abs(convergent - value) > epsilon && q2 < maxDenominator) { + p0 = p1; + p1 = p2; + q0 = q1; + q1 = q2; + a0 = a1; + r0 = r1; + } else { + stop = true; + } + } while (!stop); + + if (n >= maxIterations) { + throw new SimpleFractionException("n greater than max iterations " + value + " : " + maxIterations); + } + + if (q2 < maxDenominator) { + return new SimpleFraction((int) p2, (int) q2); + } else { + return new SimpleFraction((int) p1, (int) q1); + } + } + + private SimpleFraction calcFractionExactDenom(double val, int exactDenom){ + int num = (int)Math.round(val*(double)exactDenom); + return new SimpleFraction(num,exactDenom); + } + + private class SimpleFraction { + private final int num; + private final int denom; + + public SimpleFraction(int num, int denom) { + this.num = num; + this.denom = denom; + } + + public int getNumerator() { + return num; + } + public int getDenominator() { + return denom; + } + } + private class SimpleFractionException extends Throwable{ + private SimpleFractionException(String message){ + super(message); + } + } +} diff --git a/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java b/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java index c6233fcf3..6dcd6ebeb 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java +++ b/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java @@ -229,13 +229,25 @@ public class TestDataFormatter extends TestCase { assertEquals("321 321/1000", dfUS.formatRawCellContents(321.321, -1, "# #/##########")); // Not a valid fraction formats (too many #/# or ?/?) - hence the strange expected results - assertEquals("321 / ?/?", dfUS.formatRawCellContents(321.321, -1, "# #/# ?/?")); + +/* assertEquals("321 / ?/?", dfUS.formatRawCellContents(321.321, -1, "# #/# ?/?")); assertEquals("321 / /", dfUS.formatRawCellContents(321.321, -1, "# #/# #/#")); assertEquals("321 ?/? ?/?", dfUS.formatRawCellContents(321.321, -1, "# ?/? ?/?")); assertEquals("321 ?/? / /", dfUS.formatRawCellContents(321.321, -1, "# ?/? #/# #/#")); +*/ + + //Bug54686 patch sets default behavior of # #/## if there is a failure to parse + assertEquals("321 1/3", dfUS.formatRawCellContents(321.321, -1, "# #/# ?/?")); + assertEquals("321 1/3", dfUS.formatRawCellContents(321.321, -1, "# #/# #/#")); + assertEquals("321 1/3", dfUS.formatRawCellContents(321.321, -1, "# ?/? ?/?")); + assertEquals("321 1/3", dfUS.formatRawCellContents(321.321, -1, "# ?/? #/# #/#")); // Where both p and n don't include a fraction, so cannot always be formatted - assertEquals("123", dfUS.formatRawCellContents(-123.321, -1, "0 ?/?;0")); + // assertEquals("123", dfUS.formatRawCellContents(-123.321, -1, "0 ?/?;0")); + + //Bug54868 patch has a hit on the first string before the ";" + assertEquals("-123 1/3", dfUS.formatRawCellContents(-123.321, -1, "0 ?/?;0")); + } /** diff --git a/src/testcases/org/apache/poi/ss/usermodel/TestFractionFormat.java b/src/testcases/org/apache/poi/ss/usermodel/TestFractionFormat.java new file mode 100644 index 000000000..1db2507ea --- /dev/null +++ b/src/testcases/org/apache/poi/ss/usermodel/TestFractionFormat.java @@ -0,0 +1,83 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.ss.usermodel; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStreamReader; + +import junit.framework.TestCase; + +import org.apache.poi.hssf.HSSFTestDataSamples; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.DataFormatter; +import org.apache.poi.ss.usermodel.FormulaEvaluator; +import org.apache.poi.ss.usermodel.FractionFormat; +import org.apache.poi.ss.usermodel.Row; + +/** + * Tests for the Fraction Formatting part of DataFormatter. + * Largely taken from bug #54686 + */ +public final class TestFractionFormat extends TestCase { + public void testSingle() throws Exception { + FractionFormat f = new FractionFormat("", "##"); + double val = 321.321; + String ret = f.format(val); + assertEquals("26027/81", ret); + } + + public void testTruthFile() throws Exception { + File truthFile = HSSFTestDataSamples.getSampleFile("54686_fraction_formats.txt"); + BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(truthFile))); + Workbook wb = HSSFTestDataSamples.openSampleWorkbook("54686_fraction_formats.xls"); + Sheet sheet = wb.getSheetAt(0); + DataFormatter formatter = new DataFormatter(); + FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); + + // Skip over the header row + String truthLine = reader.readLine(); + String[] headers = truthLine.split("\t"); + truthLine = reader.readLine(); + + for (int i = 1; i < sheet.getLastRowNum() && truthLine != null; i++){ + Row r = sheet.getRow(i); + String[] truths = truthLine.split("\t"); + // Intentionally ignore the last column (tika-1132), for now + for (short j = 3; j < 12; j++){ + Cell cell = r.getCell(j, Row.CREATE_NULL_AS_BLANK); + String formatted = clean(formatter.formatCellValue(cell, evaluator)); + if (truths.length <= j){ + continue; + } + + String truth = clean(truths[j]); + String testKey = truths[0]+":"+truths[1]+":"+headers[j]; + assertEquals(testKey, truth, formatted); + } + truthLine = reader.readLine(); + } + reader.close(); + } + + private String clean(String s){ + s = s.trim().replaceAll(" +", " ").replaceAll("- +", "-"); + return s; + } +} diff --git a/test-data/spreadsheet/54686_fraction_formats.txt b/test-data/spreadsheet/54686_fraction_formats.txt new file mode 100644 index 000000000..0de773efb --- /dev/null +++ b/test-data/spreadsheet/54686_fraction_formats.txt @@ -0,0 +1,374 @@ +Numerator Denominator Double 1Digit 2Digit 3Digit Half Quarter Eight Sixteenth Tenth 100th Tika-1132 +4051 8750153 0.000462963 0 0 0 0 0 0 0 0 0 4051/8750153 +-105 100 -1.05 -1 -1 1/20 -1 1/20 -1 -1 -1 -1 1/16 -1 1/10 -1 5/100 -1 1/20 +-104 100 -1.04 -1 -1 1/25 -1 1/25 -1 -1 -1 -1 1/16 -1 -1 4/100 -1 1/25 +-103 100 -1.03 -1 -1 1/33 -1 3/100 -1 -1 -1 -1 -1 -1 3/100 -1 3/100 +-102 100 -1.02 -1 -1 1/50 -1 1/50 -1 -1 -1 -1 -1 -1 2/100 -1 1/50 +-101 100 -1.01 -1 -1 1/99 -1 1/100 -1 -1 -1 -1 -1 -1 1/100 -1 1/100 +-100 100 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 +-99 100 -0.99 -1 - 98/99 - 99/100 -1 -1 -1 -1 -1 - 99/100 - 99/100 +-98 100 -0.98 -1 - 49/50 - 49/50 -1 -1 -1 -1 -1 - 98/100 - 49/50 +-97 100 -0.97 -1 - 32/33 - 97/100 -1 -1 -1 -1 -1 - 97/100 - 97/100 +-96 100 -0.96 -1 - 24/25 - 24/25 -1 -1 -1 - 15/16 -1 - 96/100 - 24/25 +-95 100 -0.95 -1 - 19/20 - 19/20 -1 -1 -1 - 15/16 -1 - 95/100 - 19/20 +-94 100 -0.94 -1 - 47/50 - 47/50 -1 -1 -1 - 15/16 - 9/10 - 94/100 - 47/50 +-93 100 -0.93 -1 - 40/43 - 93/100 -1 -1 - 7/8 - 15/16 - 9/10 - 93/100 - 93/100 +-92 100 -0.92 -1 - 23/25 - 23/25 -1 -1 - 7/8 - 15/16 - 9/10 - 92/100 - 23/25 +-91 100 -0.91 -1 - 81/89 - 91/100 -1 -1 - 7/8 - 15/16 - 9/10 - 91/100 - 91/100 +-90 100 -0.9 - 8/9 - 9/10 - 9/10 -1 -1 - 7/8 - 14/16 - 9/10 - 90/100 - 9/10 +-89 100 -0.89 - 8/9 - 8/9 - 89/100 -1 -1 - 7/8 - 14/16 - 9/10 - 89/100 - 89/100 +-88 100 -0.88 - 7/8 - 22/25 - 22/25 -1 -1 - 7/8 - 14/16 - 9/10 - 88/100 - 22/25 +-87 100 -0.87 - 7/8 - 67/77 - 87/100 -1 - 3/4 - 7/8 - 14/16 - 9/10 - 87/100 - 87/100 +-86 100 -0.86 - 6/7 - 43/50 - 43/50 -1 - 3/4 - 7/8 - 14/16 - 9/10 - 86/100 - 43/50 +-85 100 -0.85 - 6/7 - 17/20 - 17/20 -1 - 3/4 - 7/8 - 14/16 - 9/10 - 85/100 - 17/20 +-84 100 -0.84 - 5/6 - 21/25 - 21/25 -1 - 3/4 - 7/8 - 13/16 - 8/10 - 84/100 - 21/25 +-83 100 -0.83 - 5/6 - 39/47 - 83/100 -1 - 3/4 - 7/8 - 13/16 - 8/10 - 83/100 - 83/100 +-82 100 -0.82 - 5/6 - 41/50 - 41/50 -1 - 3/4 - 7/8 - 13/16 - 8/10 - 82/100 - 41/50 +-81 100 -0.81 - 4/5 - 64/79 - 81/100 -1 - 3/4 - 6/8 - 13/16 - 8/10 - 81/100 - 81/100 +-80 100 -0.8 - 4/5 - 4/5 - 4/5 -1 - 3/4 - 6/8 - 13/16 - 8/10 - 80/100 - 4/5 +-79 100 -0.79 - 4/5 - 64/81 - 79/100 -1 - 3/4 - 6/8 - 13/16 - 8/10 - 79/100 - 79/100 +-78 100 -0.78 - 7/9 - 39/50 - 39/50 -1 - 3/4 - 6/8 - 12/16 - 8/10 - 78/100 - 39/50 +-77 100 -0.77 - 7/9 - 67/87 - 77/100 -1 - 3/4 - 6/8 - 12/16 - 8/10 - 77/100 - 77/100 +-76 100 -0.76 - 3/4 - 19/25 - 19/25 -1 - 3/4 - 6/8 - 12/16 - 8/10 - 76/100 - 19/25 +-75 100 -0.75 - 3/4 - 3/4 - 3/4 -1 - 3/4 - 6/8 - 12/16 - 8/10 - 75/100 - 3/4 +-74 100 -0.74 - 3/4 - 37/50 - 37/50 - 1/2 - 3/4 - 6/8 - 12/16 - 7/10 - 74/100 - 37/50 +-73 100 -0.73 - 3/4 - 46/63 - 73/100 - 1/2 - 3/4 - 6/8 - 12/16 - 7/10 - 73/100 - 73/100 +-72 100 -0.72 - 5/7 - 18/25 - 18/25 - 1/2 - 3/4 - 6/8 - 12/16 - 7/10 - 72/100 - 18/25 +-71 100 -0.71 - 5/7 - 22/31 - 71/100 - 1/2 - 3/4 - 6/8 - 11/16 - 7/10 - 71/100 - 71/100 +-70 100 -0.7 - 2/3 - 7/10 - 7/10 - 1/2 - 3/4 - 6/8 - 11/16 - 7/10 - 70/100 - 7/10 +-69 100 -0.69 - 2/3 - 20/29 - 69/100 - 1/2 - 3/4 - 6/8 - 11/16 - 7/10 - 69/100 - 69/100 +-68 100 -0.68 - 2/3 - 17/25 - 17/25 - 1/2 - 3/4 - 5/8 - 11/16 - 7/10 - 68/100 - 17/25 +-67 100 -0.67 - 2/3 - 65/97 - 67/100 - 1/2 - 3/4 - 5/8 - 11/16 - 7/10 - 67/100 - 67/100 +-66 100 -0.66 - 2/3 - 33/50 - 33/50 - 1/2 - 3/4 - 5/8 - 11/16 - 7/10 - 66/100 - 33/50 +-65 100 -0.65 - 2/3 - 13/20 - 13/20 - 1/2 - 3/4 - 5/8 - 10/16 - 7/10 - 65/100 - 13/20 +-64 100 -0.64 - 2/3 - 16/25 - 16/25 - 1/2 - 3/4 - 5/8 - 10/16 - 6/10 - 64/100 - 16/25 +-63 100 -0.63 - 5/8 - 46/73 - 63/100 - 1/2 - 3/4 - 5/8 - 10/16 - 6/10 - 63/100 - 63/100 +-62 100 -0.62 - 5/8 - 31/50 - 31/50 - 1/2 - 2/4 - 5/8 - 10/16 - 6/10 - 62/100 - 31/50 +-61 100 -0.61 - 3/5 - 36/59 - 61/100 - 1/2 - 2/4 - 5/8 - 10/16 - 6/10 - 61/100 - 61/100 +-60 100 -0.6 - 3/5 - 3/5 - 3/5 - 1/2 - 2/4 - 5/8 - 10/16 - 6/10 - 60/100 - 3/5 +-59 100 -0.59 - 3/5 - 23/39 - 59/100 - 1/2 - 2/4 - 5/8 - 9/16 - 6/10 - 59/100 - 59/100 +-58 100 -0.58 - 4/7 - 29/50 - 29/50 - 1/2 - 2/4 - 5/8 - 9/16 - 6/10 - 58/100 - 29/50 +-57 100 -0.57 - 4/7 - 53/93 - 57/100 - 1/2 - 2/4 - 5/8 - 9/16 - 6/10 - 57/100 - 57/100 +-56 100 -0.56 - 5/9 - 14/25 - 14/25 - 1/2 - 2/4 - 4/8 - 9/16 - 6/10 - 56/100 - 14/25 +-55 100 -0.55 - 5/9 - 11/20 - 11/20 - 1/2 - 2/4 - 4/8 - 9/16 - 6/10 - 55/100 - 11/20 +-54 100 -0.54 - 1/2 - 27/50 - 27/50 - 1/2 - 2/4 - 4/8 - 9/16 - 5/10 - 54/100 - 27/50 +-53 100 -0.53 - 1/2 - 44/83 - 53/100 - 1/2 - 2/4 - 4/8 - 8/16 - 5/10 - 53/100 - 53/100 +-52 100 -0.52 - 1/2 - 13/25 - 13/25 - 1/2 - 2/4 - 4/8 - 8/16 - 5/10 - 52/100 - 13/25 +-51 100 -0.51 - 1/2 - 25/49 - 51/100 - 1/2 - 2/4 - 4/8 - 8/16 - 5/10 - 51/100 - 51/100 +-50 100 -0.5 - 1/2 - 1/2 - 1/2 - 1/2 - 2/4 - 4/8 - 8/16 - 5/10 - 50/100 - 1/2 +-49 100 -0.49 - 1/2 - 24/49 - 49/100 - 1/2 - 2/4 - 4/8 - 8/16 - 5/10 - 49/100 - 49/100 +-48 100 -0.48 - 1/2 - 12/25 - 12/25 - 1/2 - 2/4 - 4/8 - 8/16 - 5/10 - 48/100 - 12/25 +-47 100 -0.47 - 1/2 - 8/17 - 47/100 - 1/2 - 2/4 - 4/8 - 8/16 - 5/10 - 47/100 - 47/100 +-46 100 -0.46 - 1/2 - 23/50 - 23/50 - 1/2 - 2/4 - 4/8 - 7/16 - 5/10 - 46/100 - 23/50 +-45 100 -0.45 - 4/9 - 9/20 - 9/20 - 1/2 - 2/4 - 4/8 - 7/16 - 5/10 - 45/100 - 9/20 +-44 100 -0.44 - 4/9 - 11/25 - 11/25 - 1/2 - 2/4 - 4/8 - 7/16 - 4/10 - 44/100 - 11/25 +-43 100 -0.43 - 3/7 - 3/7 - 43/100 - 1/2 - 2/4 - 3/8 - 7/16 - 4/10 - 43/100 - 43/100 +-42 100 -0.42 - 3/7 - 21/50 - 21/50 - 1/2 - 2/4 - 3/8 - 7/16 - 4/10 - 42/100 - 21/50 +-41 100 -0.41 - 2/5 - 16/39 - 41/100 - 1/2 - 2/4 - 3/8 - 7/16 - 4/10 - 41/100 - 41/100 +-40 100 -0.4 - 2/5 - 2/5 - 2/5 - 1/2 - 2/4 - 3/8 - 6/16 - 4/10 - 40/100 - 2/5 +-39 100 -0.39 - 2/5 - 16/41 - 39/100 - 1/2 - 2/4 - 3/8 - 6/16 - 4/10 - 39/100 - 39/100 +-38 100 -0.38 - 3/8 - 19/50 - 19/50 - 1/2 - 2/4 - 3/8 - 6/16 - 4/10 - 38/100 - 19/50 +-37 100 -0.37 - 3/8 - 10/27 - 37/100 - 1/2 - 1/4 - 3/8 - 6/16 - 4/10 - 37/100 - 37/100 +-36 100 -0.36 - 1/3 - 9/25 - 9/25 - 1/2 - 1/4 - 3/8 - 6/16 - 4/10 - 36/100 - 9/25 +-35 100 -0.35 - 1/3 - 7/20 - 7/20 - 1/2 - 1/4 - 3/8 - 6/16 - 4/10 - 35/100 - 7/20 +-34 100 -0.34 - 1/3 - 17/50 - 17/50 - 1/2 - 1/4 - 3/8 - 5/16 - 3/10 - 34/100 - 17/50 +-33 100 -0.33 - 1/3 - 1/3 - 33/100 - 1/2 - 1/4 - 3/8 - 5/16 - 3/10 - 33/100 - 33/100 +-32 100 -0.32 - 1/3 - 8/25 - 8/25 - 1/2 - 1/4 - 3/8 - 5/16 - 3/10 - 32/100 - 8/25 +-31 100 -0.31 - 1/3 - 22/71 - 31/100 - 1/2 - 1/4 - 2/8 - 5/16 - 3/10 - 31/100 - 31/100 +-30 100 -0.3 - 2/7 - 3/10 - 3/10 - 1/2 - 1/4 - 2/8 - 5/16 - 3/10 - 30/100 - 3/10 +-29 100 -0.29 - 2/7 - 20/69 - 29/100 - 1/2 - 1/4 - 2/8 - 5/16 - 3/10 - 29/100 - 29/100 +-28 100 -0.28 - 2/7 - 7/25 - 7/25 - 1/2 - 1/4 - 2/8 - 4/16 - 3/10 - 28/100 - 7/25 +-27 100 -0.27 - 1/4 - 10/37 - 27/100 - 1/2 - 1/4 - 2/8 - 4/16 - 3/10 - 27/100 - 27/100 +-26 100 -0.26 - 1/4 - 13/50 - 13/50 - 1/2 - 1/4 - 2/8 - 4/16 - 3/10 - 26/100 - 13/50 +-25 100 -0.25 - 1/4 - 1/4 - 1/4 - 1/2 - 1/4 - 2/8 - 4/16 - 3/10 - 25/100 - 1/4 +-24 100 -0.24 - 1/4 - 6/25 - 6/25 -0 - 1/4 - 2/8 - 4/16 - 2/10 - 24/100 - 6/25 +-23 100 -0.23 - 2/9 - 3/13 - 23/100 -0 - 1/4 - 2/8 - 4/16 - 2/10 - 23/100 - 23/100 +-22 100 -0.22 - 2/9 - 11/50 - 11/50 -0 - 1/4 - 2/8 - 4/16 - 2/10 - 22/100 - 11/50 +-21 100 -0.21 - 1/5 - 17/81 - 21/100 -0 - 1/4 - 2/8 - 3/16 - 2/10 - 21/100 - 21/100 +-20 100 -0.2 - 1/5 - 1/5 - 1/5 -0 - 1/4 - 2/8 - 3/16 - 2/10 - 20/100 - 1/5 +-19 100 -0.19 - 1/5 - 15/79 - 19/100 -0 - 1/4 - 2/8 - 3/16 - 2/10 - 19/100 - 19/100 +-18 100 -0.18 - 1/6 - 9/50 - 9/50 -0 - 1/4 - 1/8 - 3/16 - 2/10 - 18/100 - 9/50 +-17 100 -0.17 - 1/6 - 8/47 - 17/100 -0 - 1/4 - 1/8 - 3/16 - 2/10 - 17/100 - 17/100 +-16 100 -0.16 - 1/6 - 4/25 - 4/25 -0 - 1/4 - 1/8 - 3/16 - 2/10 - 16/100 - 4/25 +-15 100 -0.15 - 1/7 - 3/20 - 3/20 -0 - 1/4 - 1/8 - 2/16 - 2/10 - 15/100 - 3/20 +-14 100 -0.14 - 1/7 - 7/50 - 7/50 -0 - 1/4 - 1/8 - 2/16 - 1/10 - 14/100 - 7/50 +-13 100 -0.13 - 1/8 - 3/23 - 13/100 -0 - 1/4 - 1/8 - 2/16 - 1/10 - 13/100 - 13/100 +-12 100 -0.12 - 1/8 - 3/25 - 3/25 -0 -0 - 1/8 - 2/16 - 1/10 - 12/100 - 3/25 +-11 100 -0.11 - 1/9 - 10/91 - 11/100 -0 -0 - 1/8 - 2/16 - 1/10 - 11/100 - 11/100 +-10 100 -0.1 -0 - 1/10 - 1/10 -0 -0 - 1/8 - 2/16 - 1/10 - 10/100 - 1/10 +-9 100 -0.09 -0 - 1/11 - 9/100 -0 -0 - 1/8 - 1/16 - 1/10 - 9/100 - 9/100 +-8 100 -0.08 -0 - 2/25 - 2/25 -0 -0 - 1/8 - 1/16 - 1/10 - 8/100 - 2/25 +-7 100 -0.07 -0 - 4/57 - 7/100 -0 -0 - 1/8 - 1/16 - 1/10 - 7/100 - 7/100 +-6 100 -0.06 -0 - 3/50 - 3/50 -0 -0 -0 - 1/16 - 1/10 - 6/100 - 3/50 +-5 100 -0.05 -0 - 1/20 - 1/20 -0 -0 -0 - 1/16 - 1/10 - 5/100 - 1/20 +-4 100 -0.04 -0 - 1/25 - 1/25 -0 -0 -0 - 1/16 -0 - 4/100 - 1/25 +-3 100 -0.03 -0 - 2/67 - 3/100 -0 -0 -0 -0 -0 - 3/100 - 3/100 +-2 100 -0.02 -0 - 1/50 - 1/50 -0 -0 -0 -0 -0 - 2/100 - 1/50 +-1 100 -0.01 -0 -0 - 1/100 -0 -0 -0 -0 -0 - 1/100 - 1/100 +0 100 0 0 0 0 0 0 0 0 0 0 0 +1 100 0.01 0 0 1/100 0 0 0 0 0 1/100 1/100 +2 100 0.02 0 1/50 1/50 0 0 0 0 0 2/100 1/50 +3 100 0.03 0 2/67 3/100 0 0 0 0 0 3/100 3/100 +4 100 0.04 0 1/25 1/25 0 0 0 1/16 0 4/100 1/25 +5 100 0.05 0 1/20 1/20 0 0 0 1/16 1/10 5/100 1/20 +6 100 0.06 0 3/50 3/50 0 0 0 1/16 1/10 6/100 3/50 +7 100 0.07 0 4/57 7/100 0 0 1/8 1/16 1/10 7/100 7/100 +8 100 0.08 0 2/25 2/25 0 0 1/8 1/16 1/10 8/100 2/25 +9 100 0.09 0 1/11 9/100 0 0 1/8 1/16 1/10 9/100 9/100 +10 100 0.1 0 1/10 1/10 0 0 1/8 2/16 1/10 10/100 1/10 +11 100 0.11 1/9 10/91 11/100 0 0 1/8 2/16 1/10 11/100 11/100 +12 100 0.12 1/8 3/25 3/25 0 0 1/8 2/16 1/10 12/100 3/25 +13 100 0.13 1/8 3/23 13/100 0 1/4 1/8 2/16 1/10 13/100 13/100 +14 100 0.14 1/7 7/50 7/50 0 1/4 1/8 2/16 1/10 14/100 7/50 +15 100 0.15 1/7 3/20 3/20 0 1/4 1/8 2/16 2/10 15/100 3/20 +16 100 0.16 1/6 4/25 4/25 0 1/4 1/8 3/16 2/10 16/100 4/25 +17 100 0.17 1/6 8/47 17/100 0 1/4 1/8 3/16 2/10 17/100 17/100 +18 100 0.18 1/6 9/50 9/50 0 1/4 1/8 3/16 2/10 18/100 9/50 +19 100 0.19 1/5 15/79 19/100 0 1/4 2/8 3/16 2/10 19/100 19/100 +20 100 0.2 1/5 1/5 1/5 0 1/4 2/8 3/16 2/10 20/100 1/5 +21 100 0.21 1/5 17/81 21/100 0 1/4 2/8 3/16 2/10 21/100 21/100 +22 100 0.22 2/9 11/50 11/50 0 1/4 2/8 4/16 2/10 22/100 11/50 +23 100 0.23 2/9 3/13 23/100 0 1/4 2/8 4/16 2/10 23/100 23/100 +24 100 0.24 1/4 6/25 6/25 0 1/4 2/8 4/16 2/10 24/100 6/25 +25 100 0.25 1/4 1/4 1/4 1/2 1/4 2/8 4/16 3/10 25/100 1/4 +26 100 0.26 1/4 13/50 13/50 1/2 1/4 2/8 4/16 3/10 26/100 13/50 +27 100 0.27 1/4 10/37 27/100 1/2 1/4 2/8 4/16 3/10 27/100 27/100 +28 100 0.28 2/7 7/25 7/25 1/2 1/4 2/8 4/16 3/10 28/100 7/25 +29 100 0.29 2/7 20/69 29/100 1/2 1/4 2/8 5/16 3/10 29/100 29/100 +30 100 0.3 2/7 3/10 3/10 1/2 1/4 2/8 5/16 3/10 30/100 3/10 +31 100 0.31 1/3 22/71 31/100 1/2 1/4 2/8 5/16 3/10 31/100 31/100 +32 100 0.32 1/3 8/25 8/25 1/2 1/4 3/8 5/16 3/10 32/100 8/25 +33 100 0.33 1/3 1/3 33/100 1/2 1/4 3/8 5/16 3/10 33/100 33/100 +34 100 0.34 1/3 17/50 17/50 1/2 1/4 3/8 5/16 3/10 34/100 17/50 +35 100 0.35 1/3 7/20 7/20 1/2 1/4 3/8 6/16 4/10 35/100 7/20 +36 100 0.36 1/3 9/25 9/25 1/2 1/4 3/8 6/16 4/10 36/100 9/25 +37 100 0.37 3/8 10/27 37/100 1/2 1/4 3/8 6/16 4/10 37/100 37/100 +38 100 0.38 3/8 19/50 19/50 1/2 2/4 3/8 6/16 4/10 38/100 19/50 +39 100 0.39 2/5 16/41 39/100 1/2 2/4 3/8 6/16 4/10 39/100 39/100 +40 100 0.4 2/5 2/5 2/5 1/2 2/4 3/8 6/16 4/10 40/100 2/5 +41 100 0.41 2/5 16/39 41/100 1/2 2/4 3/8 7/16 4/10 41/100 41/100 +42 100 0.42 3/7 21/50 21/50 1/2 2/4 3/8 7/16 4/10 42/100 21/50 +43 100 0.43 3/7 3/7 43/100 1/2 2/4 3/8 7/16 4/10 43/100 43/100 +44 100 0.44 4/9 11/25 11/25 1/2 2/4 4/8 7/16 4/10 44/100 11/25 +45 100 0.45 4/9 9/20 9/20 1/2 2/4 4/8 7/16 5/10 45/100 9/20 +46 100 0.46 1/2 23/50 23/50 1/2 2/4 4/8 7/16 5/10 46/100 23/50 +47 100 0.47 1/2 8/17 47/100 1/2 2/4 4/8 8/16 5/10 47/100 47/100 +48 100 0.48 1/2 12/25 12/25 1/2 2/4 4/8 8/16 5/10 48/100 12/25 +49 100 0.49 1/2 24/49 49/100 1/2 2/4 4/8 8/16 5/10 49/100 49/100 +50 100 0.5 1/2 1/2 1/2 1/2 2/4 4/8 8/16 5/10 50/100 1/2 +51 100 0.51 1/2 25/49 51/100 1/2 2/4 4/8 8/16 5/10 51/100 51/100 +52 100 0.52 1/2 13/25 13/25 1/2 2/4 4/8 8/16 5/10 52/100 13/25 +53 100 0.53 1/2 44/83 53/100 1/2 2/4 4/8 8/16 5/10 53/100 53/100 +54 100 0.54 1/2 27/50 27/50 1/2 2/4 4/8 9/16 5/10 54/100 27/50 +55 100 0.55 5/9 11/20 11/20 1/2 2/4 4/8 9/16 6/10 55/100 11/20 +56 100 0.56 5/9 14/25 14/25 1/2 2/4 4/8 9/16 6/10 56/100 14/25 +57 100 0.57 4/7 53/93 57/100 1/2 2/4 5/8 9/16 6/10 57/100 57/100 +58 100 0.58 4/7 29/50 29/50 1/2 2/4 5/8 9/16 6/10 58/100 29/50 +59 100 0.59 3/5 23/39 59/100 1/2 2/4 5/8 9/16 6/10 59/100 59/100 +60 100 0.6 3/5 3/5 3/5 1/2 2/4 5/8 10/16 6/10 60/100 3/5 +61 100 0.61 3/5 36/59 61/100 1/2 2/4 5/8 10/16 6/10 61/100 61/100 +62 100 0.62 5/8 31/50 31/50 1/2 2/4 5/8 10/16 6/10 62/100 31/50 +63 100 0.63 5/8 46/73 63/100 1/2 3/4 5/8 10/16 6/10 63/100 63/100 +64 100 0.64 2/3 16/25 16/25 1/2 3/4 5/8 10/16 6/10 64/100 16/25 +65 100 0.65 2/3 13/20 13/20 1/2 3/4 5/8 10/16 7/10 65/100 13/20 +66 100 0.66 2/3 33/50 33/50 1/2 3/4 5/8 11/16 7/10 66/100 33/50 +67 100 0.67 2/3 65/97 67/100 1/2 3/4 5/8 11/16 7/10 67/100 67/100 +68 100 0.68 2/3 17/25 17/25 1/2 3/4 5/8 11/16 7/10 68/100 17/25 +69 100 0.69 2/3 20/29 69/100 1/2 3/4 6/8 11/16 7/10 69/100 69/100 +70 100 0.7 2/3 7/10 7/10 1/2 3/4 6/8 11/16 7/10 70/100 7/10 +71 100 0.71 5/7 22/31 71/100 1/2 3/4 6/8 11/16 7/10 71/100 71/100 +72 100 0.72 5/7 18/25 18/25 1/2 3/4 6/8 12/16 7/10 72/100 18/25 +73 100 0.73 3/4 46/63 73/100 1/2 3/4 6/8 12/16 7/10 73/100 73/100 +74 100 0.74 3/4 37/50 37/50 1/2 3/4 6/8 12/16 7/10 74/100 37/50 +75 100 0.75 3/4 3/4 3/4 1 3/4 6/8 12/16 8/10 75/100 3/4 +76 100 0.76 3/4 19/25 19/25 1 3/4 6/8 12/16 8/10 76/100 19/25 +77 100 0.77 7/9 67/87 77/100 1 3/4 6/8 12/16 8/10 77/100 77/100 +78 100 0.78 7/9 39/50 39/50 1 3/4 6/8 12/16 8/10 78/100 39/50 +79 100 0.79 4/5 64/81 79/100 1 3/4 6/8 13/16 8/10 79/100 79/100 +80 100 0.8 4/5 4/5 4/5 1 3/4 6/8 13/16 8/10 80/100 4/5 +81 100 0.81 4/5 64/79 81/100 1 3/4 6/8 13/16 8/10 81/100 81/100 +82 100 0.82 5/6 41/50 41/50 1 3/4 7/8 13/16 8/10 82/100 41/50 +83 100 0.83 5/6 39/47 83/100 1 3/4 7/8 13/16 8/10 83/100 83/100 +84 100 0.84 5/6 21/25 21/25 1 3/4 7/8 13/16 8/10 84/100 21/25 +85 100 0.85 6/7 17/20 17/20 1 3/4 7/8 14/16 9/10 85/100 17/20 +86 100 0.86 6/7 43/50 43/50 1 3/4 7/8 14/16 9/10 86/100 43/50 +87 100 0.87 7/8 67/77 87/100 1 3/4 7/8 14/16 9/10 87/100 87/100 +88 100 0.88 7/8 22/25 22/25 1 1 7/8 14/16 9/10 88/100 22/25 +89 100 0.89 8/9 8/9 89/100 1 1 7/8 14/16 9/10 89/100 89/100 +90 100 0.9 8/9 9/10 9/10 1 1 7/8 14/16 9/10 90/100 9/10 +91 100 0.91 1 81/89 91/100 1 1 7/8 15/16 9/10 91/100 91/100 +92 100 0.92 1 23/25 23/25 1 1 7/8 15/16 9/10 92/100 23/25 +93 100 0.93 1 40/43 93/100 1 1 7/8 15/16 9/10 93/100 93/100 +94 100 0.94 1 47/50 47/50 1 1 1 15/16 9/10 94/100 47/50 +95 100 0.95 1 19/20 19/20 1 1 1 15/16 1 95/100 19/20 +96 100 0.96 1 24/25 24/25 1 1 1 15/16 1 96/100 24/25 +97 100 0.97 1 32/33 97/100 1 1 1 1 1 97/100 97/100 +98 100 0.98 1 49/50 49/50 1 1 1 1 1 98/100 49/50 +99 100 0.99 1 98/99 99/100 1 1 1 1 1 99/100 99/100 +100 100 1 1 1 1 1 1 1 1 1 1 1 +101 100 1.01 1 1 1/99 1 1/100 1 1 1 1 1 1 1/100 1 1/100 +102 100 1.02 1 1 1/50 1 1/50 1 1 1 1 1 1 2/100 1 1/50 +103 100 1.03 1 1 1/33 1 3/100 1 1 1 1 1 1 3/100 1 3/100 +104 100 1.04 1 1 1/25 1 1/25 1 1 1 1 1/16 1 1 4/100 1 1/25 +105 100 1.05 1 1 1/20 1 1/20 1 1 1 1 1/16 1 1/10 1 5/100 1 1/20 +106 100 1.06 1 1 3/50 1 3/50 1 1 1 1 1/16 1 1/10 1 6/100 1 3/50 +107 100 1.07 1 1 4/57 1 7/100 1 1 1 1/8 1 1/16 1 1/10 1 7/100 1 7/100 +108 100 1.08 1 1 2/25 1 2/25 1 1 1 1/8 1 1/16 1 1/10 1 8/100 1 2/25 +109 100 1.09 1 1 1/11 1 9/100 1 1 1 1/8 1 1/16 1 1/10 1 9/100 1 9/100 +110 100 1.1 1 1/9 1 1/10 1 1/10 1 1 1 1/8 1 2/16 1 1/10 1 10/100 1 1/10 +111 100 1.11 1 1/9 1 1/9 1 11/100 1 1 1 1/8 1 2/16 1 1/10 1 11/100 1 11/100 +112 100 1.12 1 1/8 1 3/25 1 3/25 1 1 1 1/8 1 2/16 1 1/10 1 12/100 1 3/25 +113 100 1.13 1 1/8 1 10/77 1 13/100 1 1 1/4 1 1/8 1 2/16 1 1/10 1 13/100 1 13/100 +114 100 1.14 1 1/7 1 7/50 1 7/50 1 1 1/4 1 1/8 1 2/16 1 1/10 1 14/100 1 7/50 +115 100 1.15 1 1/7 1 3/20 1 3/20 1 1 1/4 1 1/8 1 2/16 1 1/10 1 15/100 1 3/20 +116 100 1.16 1 1/6 1 4/25 1 4/25 1 1 1/4 1 1/8 1 3/16 1 2/10 1 16/100 1 4/25 +117 100 1.17 1 1/6 1 9/53 1 17/100 1 1 1/4 1 1/8 1 3/16 1 2/10 1 17/100 1 17/100 +118 100 1.18 1 1/6 1 9/50 1 9/50 1 1 1/4 1 1/8 1 3/16 1 2/10 1 18/100 1 9/50 +119 100 1.19 1 1/5 1 15/79 1 19/100 1 1 1/4 1 2/8 1 3/16 1 2/10 1 19/100 1 19/100 +120 100 1.2 1 1/5 1 1/5 1 1/5 1 1 1/4 1 2/8 1 3/16 1 2/10 1 20/100 1 1/5 +121 100 1.21 1 1/5 1 17/81 1 21/100 1 1 1/4 1 2/8 1 3/16 1 2/10 1 21/100 1 21/100 +122 100 1.22 1 2/9 1 11/50 1 11/50 1 1 1/4 1 2/8 1 4/16 1 2/10 1 22/100 1 11/50 +123 100 1.23 1 2/9 1 20/87 1 23/100 1 1 1/4 1 2/8 1 4/16 1 2/10 1 23/100 1 23/100 +124 100 1.24 1 1/4 1 6/25 1 6/25 1 1 1/4 1 2/8 1 4/16 1 2/10 1 24/100 1 6/25 +125 100 1.25 1 1/4 1 1/4 1 1/4 1 1/2 1 1/4 1 2/8 1 4/16 1 3/10 1 25/100 1 1/4 +126 100 1.26 1 1/4 1 13/50 1 13/50 1 1/2 1 1/4 1 2/8 1 4/16 1 3/10 1 26/100 1 13/50 +127 100 1.27 1 1/4 1 10/37 1 27/100 1 1/2 1 1/4 1 2/8 1 4/16 1 3/10 1 27/100 1 27/100 +-103 201 -0.512437811 - 1/2 - 41/80 - 103/201 - 1/2 - 2/4 - 4/8 - 8/16 - 5/10 - 51/100 - 103/201 +-100 201 -0.497512438 - 1/2 - 1/2 - 100/201 - 1/2 - 2/4 - 4/8 - 8/16 - 5/10 - 50/100 - 100/201 +-97 201 -0.482587065 - 1/2 - 14/29 - 97/201 - 1/2 - 2/4 - 4/8 - 8/16 - 5/10 - 48/100 - 97/201 +-94 201 -0.467661692 - 1/2 - 29/62 - 94/201 - 1/2 - 2/4 - 4/8 - 7/16 - 5/10 - 47/100 - 94/201 +-91 201 -0.452736318 - 4/9 - 24/53 - 91/201 - 1/2 - 2/4 - 4/8 - 7/16 - 5/10 - 45/100 - 91/201 +-88 201 -0.437810945 - 4/9 - 7/16 - 88/201 - 1/2 - 2/4 - 4/8 - 7/16 - 4/10 - 44/100 - 88/201 +-85 201 -0.422885572 - 3/7 - 11/26 - 85/201 - 1/2 - 2/4 - 3/8 - 7/16 - 4/10 - 42/100 - 85/201 +-82 201 -0.407960199 - 2/5 - 31/76 - 82/201 - 1/2 - 2/4 - 3/8 - 7/16 - 4/10 - 41/100 - 82/201 +-79 201 -0.393034826 - 2/5 - 11/28 - 79/201 - 1/2 - 2/4 - 3/8 - 6/16 - 4/10 - 39/100 - 79/201 +-76 201 -0.378109453 - 3/8 - 31/82 - 76/201 - 1/2 - 2/4 - 3/8 - 6/16 - 4/10 - 38/100 - 76/201 +-73 201 -0.36318408 - 1/3 - 4/11 - 73/201 - 1/2 - 1/4 - 3/8 - 6/16 - 4/10 - 36/100 - 73/201 +-70 201 -0.348258706 - 1/3 - 31/89 - 70/201 - 1/2 - 1/4 - 3/8 - 6/16 - 3/10 - 35/100 - 70/201 +-67 201 -0.333333333 - 1/3 - 1/3 - 1/3 - 1/2 - 1/4 - 3/8 - 5/16 - 3/10 - 33/100 - 1/3 +-64 201 -0.31840796 - 1/3 - 7/22 - 64/201 - 1/2 - 1/4 - 3/8 - 5/16 - 3/10 - 32/100 - 64/201 +-61 201 -0.303482587 - 1/3 - 17/56 - 61/201 - 1/2 - 1/4 - 2/8 - 5/16 - 3/10 - 30/100 - 61/201 +-58 201 -0.288557214 - 2/7 - 15/52 - 58/201 - 1/2 - 1/4 - 2/8 - 5/16 - 3/10 - 29/100 - 58/201 +-55 201 -0.273631841 - 2/7 - 26/95 - 55/201 - 1/2 - 1/4 - 2/8 - 4/16 - 3/10 - 27/100 - 55/201 +-52 201 -0.258706468 - 1/4 - 15/58 - 52/201 - 1/2 - 1/4 - 2/8 - 4/16 - 3/10 - 26/100 - 52/201 +-49 201 -0.243781095 - 1/4 - 10/41 - 49/201 -0 - 1/4 - 2/8 - 4/16 - 2/10 - 24/100 - 49/201 +-46 201 -0.228855721 - 2/9 - 19/83 - 46/201 -0 - 1/4 - 2/8 - 4/16 - 2/10 - 23/100 - 46/201 +-43 201 -0.213930348 - 1/5 - 3/14 - 43/201 -0 - 1/4 - 2/8 - 3/16 - 2/10 - 21/100 - 43/201 +-40 201 -0.199004975 - 1/5 - 1/5 - 40/201 -0 - 1/4 - 2/8 - 3/16 - 2/10 - 20/100 - 40/201 +-37 201 -0.184079602 - 1/5 - 7/38 - 37/201 -0 - 1/4 - 1/8 - 3/16 - 2/10 - 18/100 - 37/201 +-34 201 -0.169154229 - 1/6 - 11/65 - 34/201 -0 - 1/4 - 1/8 - 3/16 - 2/10 - 17/100 - 34/201 +-31 201 -0.154228856 - 1/6 - 2/13 - 31/201 -0 - 1/4 - 1/8 - 2/16 - 2/10 - 15/100 - 31/201 +-28 201 -0.139303483 - 1/7 - 11/79 - 28/201 -0 - 1/4 - 1/8 - 2/16 - 1/10 - 14/100 - 28/201 +-25 201 -0.124378109 - 1/8 - 1/8 - 25/201 -0 -0 - 1/8 - 2/16 - 1/10 - 12/100 - 25/201 +-22 201 -0.109452736 - 1/9 - 7/64 - 22/201 -0 -0 - 1/8 - 2/16 - 1/10 - 11/100 - 22/201 +-19 201 -0.094527363 -0 - 7/74 - 19/201 -0 -0 - 1/8 - 2/16 - 1/10 - 9/100 - 19/201 +-16 201 -0.07960199 -0 - 7/88 - 16/201 -0 -0 - 1/8 - 1/16 - 1/10 - 8/100 - 16/201 +-13 201 -0.064676617 -0 - 2/31 - 13/201 -0 -0 - 1/8 - 1/16 - 1/10 - 6/100 - 13/201 +-10 201 -0.049751244 -0 - 1/20 - 10/201 -0 -0 -0 - 1/16 -0 - 5/100 - 10/201 +-7 201 -0.034825871 -0 - 3/86 - 7/201 -0 -0 -0 - 1/16 -0 - 3/100 - 7/201 +-4 201 -0.019900498 -0 - 1/50 - 4/201 -0 -0 -0 -0 -0 - 2/100 - 4/201 +-1 201 -0.004975124 -0 -0 - 1/201 -0 -0 -0 -0 -0 -0 - 1/201 +2 201 0.009950249 0 0 2/201 0 0 0 0 0 1/100 2/201 +5 201 0.024875622 0 1/40 5/201 0 0 0 0 0 2/100 5/201 +8 201 0.039800995 0 1/25 8/201 0 0 0 1/16 0 4/100 8/201 +11 201 0.054726368 0 4/73 11/201 0 0 0 1/16 1/10 5/100 11/201 +14 201 0.069651741 0 3/43 14/201 0 0 1/8 1/16 1/10 7/100 14/201 +17 201 0.084577114 0 6/71 17/201 0 0 1/8 1/16 1/10 8/100 17/201 +20 201 0.099502488 0 1/10 20/201 0 0 1/8 2/16 1/10 10/100 20/201 +23 201 0.114427861 1/9 4/35 23/201 0 0 1/8 2/16 1/10 11/100 23/201 +26 201 0.129353234 1/8 11/85 26/201 0 1/4 1/8 2/16 1/10 13/100 26/201 +29 201 0.144278607 1/7 14/97 29/201 0 1/4 1/8 2/16 1/10 14/100 29/201 +32 201 0.15920398 1/6 7/44 32/201 0 1/4 1/8 3/16 2/10 16/100 32/201 +35 201 0.174129353 1/6 4/23 35/201 0 1/4 1/8 3/16 2/10 17/100 35/201 +38 201 0.189054726 1/5 7/37 38/201 0 1/4 2/8 3/16 2/10 19/100 38/201 +41 201 0.2039801 1/5 10/49 41/201 0 1/4 2/8 3/16 2/10 20/100 41/201 +44 201 0.218905473 2/9 7/32 44/201 0 1/4 2/8 4/16 2/10 22/100 44/201 +47 201 0.233830846 1/4 18/77 47/201 0 1/4 2/8 4/16 2/10 23/100 47/201 +50 201 0.248756219 1/4 1/4 50/201 0 1/4 2/8 4/16 2/10 25/100 50/201 +53 201 0.263681592 1/4 24/91 53/201 1/2 1/4 2/8 4/16 3/10 26/100 53/201 +56 201 0.278606965 2/7 17/61 56/201 1/2 1/4 2/8 4/16 3/10 28/100 56/201 +59 201 0.293532338 2/7 27/92 59/201 1/2 1/4 2/8 5/16 3/10 29/100 59/201 +62 201 0.308457711 1/3 29/94 62/201 1/2 1/4 2/8 5/16 3/10 31/100 62/201 +65 201 0.323383085 1/3 11/34 65/201 1/2 1/4 3/8 5/16 3/10 32/100 65/201 +68 201 0.338308458 1/3 23/68 68/201 1/2 1/4 3/8 5/16 3/10 34/100 68/201 +71 201 0.353233831 1/3 6/17 71/201 1/2 1/4 3/8 6/16 4/10 35/100 71/201 +74 201 0.368159204 3/8 7/19 74/201 1/2 1/4 3/8 6/16 4/10 37/100 74/201 +77 201 0.383084577 3/8 18/47 77/201 1/2 2/4 3/8 6/16 4/10 38/100 77/201 +80 201 0.39800995 2/5 39/98 80/201 1/2 2/4 3/8 6/16 4/10 40/100 80/201 +83 201 0.412935323 2/5 19/46 83/201 1/2 2/4 3/8 7/16 4/10 41/100 83/201 +86 201 0.427860697 3/7 3/7 86/201 1/2 2/4 3/8 7/16 4/10 43/100 86/201 +89 201 0.44278607 4/9 31/70 89/201 1/2 2/4 4/8 7/16 4/10 44/100 89/201 +92 201 0.457711443 1/2 27/59 92/201 1/2 2/4 4/8 7/16 5/10 46/100 92/201 +95 201 0.472636816 1/2 26/55 95/201 1/2 2/4 4/8 8/16 5/10 47/100 95/201 +98 201 0.487562189 1/2 39/80 98/201 1/2 2/4 4/8 8/16 5/10 49/100 98/201 +101 201 0.502487562 1/2 1/2 101/201 1/2 2/4 4/8 8/16 5/10 50/100 101/201 +104 201 0.517412935 1/2 15/29 104/201 1/2 2/4 4/8 8/16 5/10 52/100 104/201 +107 201 0.532338308 1/2 33/62 107/201 1/2 2/4 4/8 9/16 5/10 53/100 107/201 +110 201 0.547263682 5/9 29/53 110/201 1/2 2/4 4/8 9/16 5/10 55/100 110/201 +113 201 0.562189055 5/9 9/16 113/201 1/2 2/4 4/8 9/16 6/10 56/100 113/201 +116 201 0.577114428 4/7 15/26 116/201 1/2 2/4 5/8 9/16 6/10 58/100 116/201 +119 201 0.592039801 3/5 45/76 119/201 1/2 2/4 5/8 9/16 6/10 59/100 119/201 +122 201 0.606965174 3/5 17/28 122/201 1/2 2/4 5/8 10/16 6/10 61/100 122/201 +125 201 0.621890547 5/8 51/82 125/201 1/2 2/4 5/8 10/16 6/10 62/100 125/201 +128 201 0.63681592 2/3 7/11 128/201 1/2 3/4 5/8 10/16 6/10 64/100 128/201 +131 201 0.651741294 2/3 58/89 131/201 1/2 3/4 5/8 10/16 7/10 65/100 131/201 +134 201 0.666666667 2/3 2/3 2/3 1/2 3/4 5/8 11/16 7/10 67/100 2/3 +137 201 0.68159204 2/3 15/22 137/201 1/2 3/4 5/8 11/16 7/10 68/100 137/201 +140 201 0.696517413 2/3 39/56 140/201 1/2 3/4 6/8 11/16 7/10 70/100 140/201 +143 201 0.711442786 5/7 37/52 143/201 1/2 3/4 6/8 11/16 7/10 71/100 143/201 +146 201 0.726368159 5/7 69/95 146/201 1/2 3/4 6/8 12/16 7/10 73/100 146/201 +149 201 0.741293532 3/4 43/58 149/201 1/2 3/4 6/8 12/16 7/10 74/100 149/201 +152 201 0.756218905 3/4 31/41 152/201 1 3/4 6/8 12/16 8/10 76/100 152/201 +155 201 0.771144279 7/9 64/83 155/201 1 3/4 6/8 12/16 8/10 77/100 155/201 +158 201 0.786069652 4/5 11/14 158/201 1 3/4 6/8 13/16 8/10 79/100 158/201 +161 201 0.800995025 4/5 4/5 161/201 1 3/4 6/8 13/16 8/10 80/100 161/201 +164 201 0.815920398 4/5 31/38 164/201 1 3/4 7/8 13/16 8/10 82/100 164/201 +167 201 0.830845771 5/6 54/65 167/201 1 3/4 7/8 13/16 8/10 83/100 167/201 +170 201 0.845771144 5/6 11/13 170/201 1 3/4 7/8 14/16 8/10 85/100 170/201 +173 201 0.860696517 6/7 68/79 173/201 1 3/4 7/8 14/16 9/10 86/100 173/201 +176 201 0.875621891 7/8 7/8 176/201 1 1 7/8 14/16 9/10 88/100 176/201 +179 201 0.890547264 8/9 57/64 179/201 1 1 7/8 14/16 9/10 89/100 179/201 +182 201 0.905472637 1 67/74 182/201 1 1 7/8 14/16 9/10 91/100 182/201 +185 201 0.92039801 1 81/88 185/201 1 1 7/8 15/16 9/10 92/100 185/201 +188 201 0.935323383 1 29/31 188/201 1 1 7/8 15/16 9/10 94/100 188/201 +191 201 0.950248756 1 19/20 191/201 1 1 1 15/16 1 95/100 191/201 +194 201 0.965174129 1 83/86 194/201 1 1 1 15/16 1 97/100 194/201 +197 201 0.980099502 1 49/50 197/201 1 1 1 1 1 98/100 197/201 +200 201 0.995024876 1 1 200/201 1 1 1 1 1 1 200/201 +203 201 1.009950249 1 1 1 2/201 1 1 1 1 1 1 1/100 1 2/201 +206 201 1.024875622 1 1 1/40 1 5/201 1 1 1 1 1 1 2/100 1 5/201 +209 201 1.039800995 1 1 1/25 1 8/201 1 1 1 1 1/16 1 1 4/100 1 8/201 +212 201 1.054726368 1 1 4/73 1 11/201 1 1 1 1 1/16 1 1/10 1 5/100 1 11/201 +215 201 1.069651741 1 1 3/43 1 14/201 1 1 1 1/8 1 1/16 1 1/10 1 7/100 1 14/201 +218 201 1.084577114 1 1 6/71 1 17/201 1 1 1 1/8 1 1/16 1 1/10 1 8/100 1 17/201 +221 201 1.099502488 1 1 1/10 1 20/201 1 1 1 1/8 1 2/16 1 1/10 1 10/100 1 20/201 +224 201 1.114427861 1 1/9 1 4/35 1 23/201 1 1 1 1/8 1 2/16 1 1/10 1 11/100 1 23/201 +227 201 1.129353234 1 1/8 1 11/85 1 26/201 1 1 1/4 1 1/8 1 2/16 1 1/10 1 13/100 1 26/201 +230 201 1.144278607 1 1/7 1 14/97 1 29/201 1 1 1/4 1 1/8 1 2/16 1 1/10 1 14/100 1 29/201 +233 201 1.15920398 1 1/6 1 7/44 1 32/201 1 1 1/4 1 1/8 1 3/16 1 2/10 1 16/100 1 32/201 +236 201 1.174129353 1 1/6 1 4/23 1 35/201 1 1 1/4 1 1/8 1 3/16 1 2/10 1 17/100 1 35/201 +239 201 1.189054726 1 1/5 1 7/37 1 38/201 1 1 1/4 1 2/8 1 3/16 1 2/10 1 19/100 1 38/201 +242 201 1.2039801 1 1/5 1 10/49 1 41/201 1 1 1/4 1 2/8 1 3/16 1 2/10 1 20/100 1 41/201 +245 201 1.218905473 1 2/9 1 7/32 1 44/201 1 1 1/4 1 2/8 1 4/16 1 2/10 1 22/100 1 44/201 +248 201 1.233830846 1 1/4 1 18/77 1 47/201 1 1 1/4 1 2/8 1 4/16 1 2/10 1 23/100 1 47/201 +251 201 1.248756219 1 1/4 1 1/4 1 50/201 1 1 1/4 1 2/8 1 4/16 1 2/10 1 25/100 1 50/201 +254 201 1.263681592 1 1/4 1 24/91 1 53/201 1 1/2 1 1/4 1 2/8 1 4/16 1 3/10 1 26/100 1 53/201 + + + + + + + + + + + + + + + + + + + diff --git a/test-data/spreadsheet/54686_fraction_formats.xls b/test-data/spreadsheet/54686_fraction_formats.xls new file mode 100644 index 0000000000000000000000000000000000000000..d802995b181495a723d9b846848761b23d090f25 GIT binary patch literal 180224 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 G{r_Jeej^6} literal 0 HcmV?d00001