Class FloatToDecimal
java.lang.Object
com.fasterxml.jackson.core.io.schubfach.FloatToDecimal
This class exposes a method to render a
float as a string.-
Field Summary
Fields -
Method Summary
-
Field Details
-
MAX_CHARS
public final int MAX_CHARS- See Also:
-
-
Method Details
-
toString
Returns a string rendering of thefloatargument.The characters of the result are all drawn from the ASCII set.
- Any NaN, whether quiet or signaling, is rendered as
"NaN", regardless of the sign bit. - The infinities +∞ and -∞ are rendered as
"Infinity"and"-Infinity", respectively. - The positive and negative zeroes are rendered as
"0.0"and"-0.0", respectively. - A finite negative
vis rendered as the sign '-' followed by the rendering of the magnitude -v. - A finite positive
vis rendered in two stages:- Selection of a decimal: A well-defined
decimal d
vis selected to representv. - Formatting as a string: The decimal
d
vis formatted as a string, either in plain or in computerized scientific notation, depending on its value.
- Selection of a decimal: A well-defined
decimal d
A decimal is a number of the form d×10i for some (unique) integers d > 0 and i such that d is not a multiple of 10. These integers are the significand and the exponent, respectively, of the decimal. The length of the decimal is the (unique) integer n meeting 10n-1 ≤ d < 10n.
The decimal d
vfor a finite positivevis defined as follows:- Let R be the set of all decimals that round to
vaccording to the usual round-to-closest rule of IEEE 754 floating-point arithmetic. - Let m be the minimal length over all decimals in R.
- When m ≥ 2, let T be the set of all decimals in R with length m. Otherwise, let T be the set of all decimals in R with length 1 or 2.
- Define d
vas the decimal in T that is closest tov. Or if there are two such decimals in T, select the one with the even significand (there is exactly one).
The (uniquely) selected decimal d
vis then formatted.Let d, i and n be the significand, exponent and length of d
v, respectively. Further, let e = n + i - 1 and let d1…dn be the usual decimal expansion of the significand. Note that d1 ≠ 0 ≠ dn.- Case -3 ≤ e < 0:
d
vis formatted as0.0…0d1…dn, where there are exactly -(n + i) zeroes between the decimal point and d1. For example, 123 × 10-4 is formatted as0.0123. - Case 0 ≤ e < 7:
- Subcase i ≥ 0:
d
vis formatted as d1…dn0…0.0, where there are exactly i zeroes between dn and the decimal point. For example, 123 × 102 is formatted as12300.0. - Subcase i < 0:
d
vis formatted as d1…dn+i.dn+i+1…dn. There are exactly -i digits to the right of the decimal point. For example, 123 × 10-1 is formatted as12.3.
- Subcase i ≥ 0:
d
- Case e < -3 or e ≥ 7:
computerized scientific notation is used to format
d
v. Here e is formatted as byInteger.toString(int).- Subcase n = 1:
d
vis formatted as d1.0Ee. For example, 1 × 1023 is formatted as1.0E23. - Subcase n > 1:
d
vis formatted as d1.d2…dnEe. For example, 123 × 10-21 is formatted as1.23E-19.
- Subcase n = 1:
d
- Parameters:
v- thefloatto be rendered.- Returns:
- a string rendering of the argument.
- Any NaN, whether quiet or signaling, is rendered as
-