Re: draft-ietf-httpbis-header-structure-15, Serializing a Decimal

Hi Kari,

Very good catch; I noticed this a while back but forgot to file an issue. Now:
  https://github.com/httpwg/http-extensions/issues/1043

Cheers,


> On 30 Jan 2020, at 5:17 am, Kari Hurtta <hurtta-ietf@elmme-mailer.org> wrote:
> 
> 4.1.5.  Serializing a Decimal
> https://tools.ietf.org/html/draft-ietf-httpbis-header-structure-15#section-4.1.5
> 
> 
> |   Given a decimal_number as input_decimal, return an ASCII string
> |   suitable for use in a HTTP header value.
> |
> |   1.  Let output be an empty string.
> |
> |   2.  If input_decimal is less than (but not equal to) 0, append "-" to
> |       output.
> |
> |   3.  Append input_decimal's integer component represented in base 10
> |       (using only decimal digits) to output; if it is zero, append "0".
> |
> |   4.  If the number of characters appended in the previous step is
> |       greater than 12, fail serialisation.
> |
> |   5.  Append "." to output.
> |
> |   6.  If input_decimal's fractional component is zero, append "0" to
> |       output.
> |
> |   7.  Else if input_decimal's fractional component has up to three
> |       digits, append them represented in base 10 (using only decimal
> |       digits) to output.
> |
> |   8.  Otherwise, append the first three digits of input_decimal's
> |       fractional component (represented in base 10, using only decimal
> |       digits) to output, rounding the final digit to the nearest value,
> |       or to the even value if it is equidistant.
> |
> |   9.  Return output.
> 
> I'm not sure how this works.
> 
> 
> Let's input_decimal  to be 123.9998
> 
> After step 3 output is "123"
> 
> After step 5 output is "123."
> 
> On step 8 the first three digits of input_decimal's fractional component
> are "999".
> 
> The final digit is "9".  There is no possiblity to round up that digit.
> 
> So final output is "123.999".
> 
> Is that orrect ? That is effectively truncation.
> 
> If 123.9998 is rounded to 3 fractional decimals, value is 124.000,
> but that serialization can not produce it.
> 
> / Kari Hurtta
> 
> 

--
Mark Nottingham   https://www.mnot.net/

Received on Wednesday, 29 January 2020 22:22:06 UTC