Wednesday, February 20, 2019

#1 2014-02-11 09:11:38 am

ame
Member
Registered: 2011-06-28
Posts: 178

Questions related to Number to String conversion

Hi,

I need to pass via curl some "numeric" values that can contains decimal
So, the number 5.1 in Europe (dot is converted to comma) is converted by Applescript as 5,1 and the curl command fail

I found the standard addition command "localized text"

Seems that it works.

Applescript:

set a to 5.1
set b to localized string a

return "5.1"

First question is: it is recommended or not to use it?
Any other method to convert in string a decimal number preserving dot for pass in shell script?

Second question is:

Big numbers (like bytes of a big file) once gutted, are converted as scientific notation
I found the number to text routine
http://www.macosxautomation.com/applesc … rt-02.html

But on Mountain Lion trying to convert number 1234567890 --> 1.23456789E+9 return me "1,2345678"
Seems in error. Any workaround or unique routine to solve both problem?

Ame


Filed under: conversion, integer, string, real

Offline

 

#2 2014-02-12 11:20:17 am

ame
Member
Registered: 2011-06-28
Posts: 178

Re: Questions related to Number to String conversion

Hi,

I modified the script for European users that need to convert number with decimal or number expressed as scientific notation.
I modified the line with set y to the offset of...
This is useful for pass data to curl and populate DB with number that require decimal expressed with dot.
I also added the case when number has only decimal.
Anyway the command localized text seems work good.

Applescript:

on number_to_string(this_number)
   set this_number to this_number as string
   if this_number contains "E+" then
       set x to the offset of "," in this_number
       set y to the offset of "+" in this_number
       set z to the offset of "E" in this_number
       set the decimal_adjust to characters (y - (length of this_number)) thru -1 of this_number as string as number
       if x is not 0 then
           set the first_part to characters 1 thru (x - 1) of this_number as string
       else
           set the first_part to ""
       end if
       set the second_part to characters (x + 1) thru (z - 1) of this_number as string
       set the converted_number to the first_part
       repeat with i from 1 to the decimal_adjust
           try
               set the converted_number to the converted_number & character i of the second_part
           on error
               set the converted_number to the converted_number & "0"
           end try
       end repeat
       return the converted_number
   else if this_number contains "," then
       set AppleScript's text item delimiters to ","
       set arrayObjects to text items of this_number
       set AppleScript's text item delimiters to "."
       set this_number to arrayObjects as string
       set AppleScript's text item delimiters to ""
       return this_number
   else
       return this_number
   end if
end number_to_string

Offline

 

#3 2019-02-11 08:20:13 pm

scriptfactors
Member
Registered: 2006-04-01
Posts: 4

Re: Questions related to Number to String conversion

do this


on convertNumberToString(n)
    "php -r 'echo sprintf(\"%d\",\"" & n & "\");'"
    do shell script result
    return result
end convertNumberToString


cheers ;-)

Offline

 

#4 2019-02-12 01:53:34 pm

CK
Member
From:: UK
Registered: 2018-11-04
Posts: 20

Re: Questions related to Number to String conversion

Hopefully I'm understanding you correctly, and that you want to convert an AppleScript number into a string that uses a dot as its decimal separator, and converts scientific notation into full decimal notation.

I posted this trick very recently to another post on this forum, and one of the complaints cited was that it didn't use localised decimal separators, only ".".  In your case, this sounds like it would be an advantage.

It also has the benefit of expanding scientific notation into full decimal notation, handling numbers up to the order of 10¹⁶ in magnitude (beyond which the result will remain expressed in scientific notation).

Applescript:

set n to n as yards as string

where n is your input number that needs converted into string format.

Output:

Applescript:

5.1 --> "5.1"
1.23456789E+9 --> ""1234567890"

Offline

 

Board footer

Powered by FluxBB

RSS (new topics) RSS (active topics)