[ 
https://issues.apache.org/jira/browse/THRIFT-3456?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15034956#comment-15034956
 ] 

Jens Geyer commented on THRIFT-3456:
------------------------------------

Again, the usual way to deal with precision inconsistencies with floats of all 
flavours is to get the absolute of the difference and comparing that value 
against some epsilon border:

{code:title=pseudo code}
assert( abs(value1-value2) < 1e-6 );   
{code}

That string test, well ... looks a bit strange to me, to be honest. 

> rounding issue in static assert
> -------------------------------
>
>                 Key: THRIFT-3456
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3456
>             Project: Thrift
>          Issue Type: Bug
>          Components: D - Compiler
>            Reporter: Tolstokulakov Nikolay
>            Assignee: Tolstokulakov Nikolay
>             Fix For: 1.0
>
>
> thrift.codegen.idlgen
>  static assert(structIdlString!WithDefaults ==
>  `struct WithDefaults {
>    -1: string a = "asdf",
>   -2: double b = 3.1415,
>    1: WithoutMeta c = {a: "foo", b: 3, },
>  }
>  `);
> This assert fails for me, because struct contains double b = 3.1414999...999
> I suggest replace 3.1415 with 1.0e+20 
> This value is free from rounding issues.
> FYI
> thrift.internal.ctfe contains similar unit test, but it is not use strict 
> match:
> static assert(ctfeToString(3.1415).startsWith("3.141"));
> Create pull request: https://github.com/apache/thrift/pull/720



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to