> On 16. Jun 2020, at 20:53, Mattias Andrée <maand...@kth.se> wrote:
> 
> I'm assuming temp.value i an `int`, as %d is used. The problem was
> probably that `1E6` is actually a `double` rather than an `int`,
> as the whole expression is promoted to `double`, because `bprintf` is
> (I assume) variadic, and the compiler does not know to change the
> cast the expression back to `int` because only the type of the first
> argument is specified in its declaration.

Yes, you are likely right and with the %d "rounding” one even seems to
loose the precision.
That’s why %.1f for example would probably a better choice here, as 
there is a subtle difference between 94.1 and 94.9 degree one may
want to know.

> On Tue, 16 Jun 2020 20:42:08 +0200
> Laslo Hunhold <d...@frign.de> wrote:
> 
>> On Tue, 16 Jun 2020 17:55:03 +0000
>> messw1thdbest <messw1thdb...@protonmail.ch> wrote:
>> 
>> Dear messw1thdbest,
>> 
>>> <               return bprintf("%d", (temp.value - 273150000) / 1E6);
>>> ---  
>>>>              return bprintf("%d", (temp.value - 273150000)/1000000);    
>> 
>> I'm really intrigued by that; thanks for sending in this patch! What is
>> the origin of this problem? Does this have something to do with
>> guaranteed constant-sizes in Posix?
>> 
>> With best regards
>> 
>> Laslo Hunhold
>> 
> 
> 


Reply via email to