• Re: What value can cause this error?

    From Rich@21:1/5 to alexandru on Tue Sep 17 21:49:46 2024
    alexandru <alexandru.dadalau@meshparts.de> wrote:
    I got this error message from a customer and no further information is available.
    What could have caused this error?

    integer value too large to represent
    while executing
    "expr {round($val*(10.0**($decimals+3)))/(10.0**$decimals)}"

    I know that "val" is a proper number and that "decimals" is 6.

    I tried to run this expression with very high "val" values and could not reproduce the error.

    Are you *absolutely* sure that decimals is 6, because I can generate
    the error via a smallish change to decimals:

    $ rlwrap tclsh
    % set val 123
    123
    % set decimals 999
    999
    % expr {round($val*(10.0**($decimals+3)))/(10.0**$decimals)}
    integer value too large to represent
    % set tcl_patchLevel
    8.6.12

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Rich@21:1/5 to alexandru on Wed Sep 18 00:13:34 2024
    alexandru <alexandru.dadalau@meshparts.de> wrote:
    Actually yes, I'm sure.
    I have the errorInfo that shows the stack of procedure calls.
    The procedure is called with "decimals" equal to 6.

    A very large number in val can also trigger the same error, even with
    decimals at 6:

    $ rlwrap tclsh
    % set decimals 6
    6
    % set val 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    99999999999999999999999999999999999999999999999999999999999
    99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
    9999999999999999999999999999999999999999999999999
    % expr {round($val*(10.0**($decimals+3)))/(10.0**$decimals)}
    integer value too large to represent
    %

    So if you are certian decimals is 6, then a very large number is
    ending up in val somehow.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Christian Gollwitzer@21:1/5 to All on Wed Sep 18 18:06:14 2024
    Am 18.09.24 um 12:15 schrieb alexandru:
    Ok thanks, I did tried very large values, but I gave up trying to early,
    as no error came.

    You get this for an infinite argumment:

    (chris) 69 % expr round(Inf)
    integer value too large to represent

    Christian

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)