There are not so many steps to be made. The functionality is described in my
first mail.


On Fri, Aug 19, 2011 at 9:38 PM, Eric Decker <cire...@gmail.com> wrote:

>
>
> On Fri, Aug 19, 2011 at 11:32 AM, Geo Gkolfin <geo198...@gmail.com> wrote:
>
>> Thanks for your answer!
>> Actually it almost worked!
>> %lu prints 3354000128 instead of 3354000112.
>> %lx prints c7e9fb00 which is 3354000128 hex.
>> This can drive you crazy! Any ideas please?
>>
>
> Without explicitly stepping through the code and seeing what it is doing,
> we would be guessing.
>
>>
>> On Thu, Aug 18, 2011 at 12:58 AM, Michael Schippling 
>> <sc...@santafe.edu>wrote:
>>
>>> That is a little odd...
>>>
>>> I guess the implicit casting is trying to help you by
>>> returning the largest value for the uint16 when converting
>>> from a too-big float. When you change to uint32 you
>>> should get 0xC7E9FAF0 in your integer (which is what
>>> my Widows calculator shows as the correct conversion
>>> for decimal 354000112). Then, because the top bit is
>>> set and you asked for a signed decimal output "%ld"
>>> you should get a negative value, but it's off by 16...
>>>  -940967168d == 0xC7E9FB00
>>> so I'm not sure what is going on.
>>>
>>> Try printing %lu or %lx and see what you get.
>>>
>>> MS
>>>
>>> Geo Gkolfin wrote:
>>>
>>>> Hello!
>>>>
>>>> I am using telosb motes and tinyos-2.1.0. I have an application in which
>>>> some floating point operations are done and I wish to print (using
>>>> PrintfClient) only the decimal part of the result. Since the printed value
>>>> is not what it should be -it is always 65535- I wrote a simple program 
>>>> where
>>>> I have:
>>>>
>>>> float y;
>>>> uint16_t x;
>>>>
>>>>  y=4354.542134509;
>>>>  x=y;
>>>> printf("int(4354.542134509)=%**u\n",x);
>>>> printfflush();
>>>>
>>>> I run
>>>> java net.tinyos.tools.PrintfClient -comm serial@/dev/ttyUSB0:telosb
>>>>
>>>> and I get the 4354!
>>>>
>>>> If I change the value stored in y to:
>>>> y=3354000112.542134509 then the printf returns 65535 -the same value as
>>>> in my application!  So I guess this is because the value does not "fit" 
>>>> into
>>>> a uint16_t. I change x definition to uint32_t and %u to %ld (make is okay
>>>> with that), but then the printed value is -940967168!
>>>> What is the problem?
>>>>
>>>> Thanks in advance,
>>>> Georgia
>>>>
>>>>
>>>> ------------------------------**------------------------------**
>>>> ------------
>>>>
>>>> ______________________________**_________________
>>>> Tinyos-help mailing list
>>>> Tinyos-help@millennium.**berkeley.edu<Tinyos-help@millennium.berkeley.edu>
>>>> https://www.millennium.**berkeley.edu/cgi-bin/mailman/**
>>>> listinfo/tinyos-help<https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help>
>>>>
>>>
>>
>> _______________________________________________
>> Tinyos-help mailing list
>> Tinyos-help@millennium.berkeley.edu
>> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>>
>
>
>
> --
> Eric B. Decker
> Senior (over 50 :-) Researcher
>
>
>
_______________________________________________
Tinyos-help mailing list
Tinyos-help@millennium.berkeley.edu
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to