myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gabrielle Crawford (JIRA)" <...@myfaces.apache.org>
Subject [jira] Commented: (TRINIDAD-1683) client-side convertNumber causes loss of precision
Date Fri, 17 Sep 2010 17:52:34 GMT

    [ https://issues.apache.org/jira/browse/TRINIDAD-1683?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12910688#action_12910688
] 

Gabrielle Crawford commented on TRINIDAD-1683:
----------------------------------------------

javascript numbers are really doubles, and as such can accurately support 15 digits, see 

http://en.wikipedia.org/wiki/Double_precision

Proposed fix is to just parse the number string, and don't try to convert on the client if
the number of digits is greater than 15. Of course this is an imperfect fix, but since the
vast majority of numbers entered are less than 15 digits numbers are still converted on the
client most of the time.

> client-side convertNumber causes loss of precision
> --------------------------------------------------
>
>                 Key: TRINIDAD-1683
>                 URL: https://issues.apache.org/jira/browse/TRINIDAD-1683
>             Project: MyFaces Trinidad
>          Issue Type: Bug
>          Components: Components
>    Affects Versions:  1.2.12-core
>            Reporter: Cale Scholl
>            Assignee: Gabrielle Crawford
>            Priority: Minor
>             Fix For: 1.2.14-core 
>
>         Attachments: maxPrecision_1.2.12.2.patch, maxPrecision_trunk.patch
>
>
> ISSUE:
> ----------
> JS numbers are 64-bit values and thus only have 16 digits of precision; this isn't enough
to represent the max value of a Long, BigInteger, or BigDecimal. This means that when we convert
a number string to object then back to string on the client, we can lose precision, even though
we wouldn't lose any precision on the server.
> FIX:
> -----
> Only render a client converter if the input value is bound to a supported type (Float,
Double, Integer, Short, Byte). The JavaScript number is a 64-bit floating type and has enough
precision to represent any of these supported types.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message