I'm coming in this late and I'm confused.

I made a JSON library a couple years ago (not an external) and I have been 
encouraged to make it available, but with JSON now being built-in, I didn't 
bother.  Now, there is MergJSON?  


> On Jun 29, 2016, at 9:06 AM, Mark Waddingham <m...@livecode.com> wrote:
> 
> On 2016-06-29 16:58, Lagi Pittas wrote:
>> Hi Mark,
>> Thanks for the replies. But your second response I don't understand and the
>> whole point of what I was getting at.
>> "I suppose there could be an option to choose a 'number of decimal places'
>> option passed to the library - however, you will then potentially lose
>> information in your numbers. Therefore, it is probably better to do the
>> rounding in script after loading the JSON file."
>> If  "reals" are returned as  strings anyway then if the real says 2.30 how
>> can I be losing any precision if 2.30 is what's in the file?. The option
>> though would be a good idea but in the calling routine to MergJSON.. If it
>> is left blank or false then it uses the current setting of number format
>> or if there is a string then that will be the format it uses.
> 
> Ah - this is the critical point...
> 
> MergJSON uses a C library which converts the text of a JSON input into a tree 
> of values - these values are arrays, objects, numbers, strings, booleans etc. 
> i.e. The output of this library is then processed by the external to convert 
> it to a LiveCode array and string values...
> 
> This means that the external gets numbers from the JSON as IEEE754 doubles, 
> and then has to format them for return as strings. As the original string has 
> already been converted to a number at this point, the external must format 
> the numbers with enough decimal places so that you don't lose any 
> information. Hence why you are probably best off processing the output of the 
> external in LiveCode Script, rounding any numbers you know need to be rounded.
> 
>> If I look at the Arrays using the variable display in the debugger they are
>> all showing as 2 decimals so I would expect them to export in the same
>> format - or am I again missing something about the debugger?
> 
>> If added  global variable xx in the debugger with value 1.3456 and that is
>> how it shows and ll 2 decimal place prices still show the same so LC
>> "knows" how I want to see them.
> 
> The debugger displayed values using the numberFormat settings - usually 6 
> decimal places.
> 
> However, an important thing to remember about LiveCode Script is that if 
> something is a string, then it will remain a string. You only get actually 
> numbers internally when you perform operations on values which need to be 
> numbers. So:
> 
>    put 1.43858239402803492304
> 
> will display:
> 
>    1.43858239402803492304
> 
> But:
> 
>   put 1.43858239402803492304 + 0
> 
> will display:
> 
>   1.438582
> 
> As numbers are rounded using numberFormat when converted to strings.
> 
> Warmest Regards,
> 
> Mark.
> 
> -- 
> Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
> LiveCode: Everyone can create apps
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
> 


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to