[Gambas-user] I create a new function to share

Doriano Blengino doriano.blengino at ...1909...
Fri Jun 26 15:52:47 CEST 2009


Pino Zollo ha scritto:
> Il venerdì 26 giugno 2009 04:34:54 kobolds ha scritto:
>   
>> I create a function call FormatX() for easy formatting number, date and
>> string . read the cctools.html for detail on how to use it .
>>
>> post your opinion what you think about it
>>
>> http://www.nabble.com/file/p24216805/cctools.tar cctools.tar
>>     
>
> Hi,
> I have tried in "it_IT.utf8" environment and I get:
>
> FMain.Form_Open.396: comma is decimal separator         True
> FMain.Form_Open.397: 2 347,25
>
> Actually puts a space in place of .
>   
With default Debian configuration, LANG=it_IT at ...33..., tried this:

      label2.Text = Format(22505.6, "#,#.00")


Results in "22 505,6" <- there is a space.

-----------------

Changed file "/usr/share/i18n/locales/it_IT" so the section:

    LC_NUMERIC
    decimal_point             "<U002C>"
    thousands_sep             ""      <------------ empty string
    grouping                  0;0
    END LC_NUMERIC


results in:

    LC_NUMERIC
    decimal_point             "<U002C>"
    thousands_sep             "<U002E>"   <------- dot simbol
    grouping                  0;0
    END LC_NUMERIC


...and now it works ok.

I don't know why there is this error - don't even know if this *is* an 
error, but now it works as expected. If somebody confirms to me that the 
value of *thousand_sep* should not be empty, I can post a bug to the 
maintainer of the file *BUT*:

It is worth to note that in that file, a few lines above, in the section 
LC_MONETARY, the thousand separator is correctly indicated. As Benoit 
says, all this could be correct - if we want thousand separators perhaps 
we have to use the monetary notation and not a "general number" one. In 
fact, to separate the thousands is more a commercial habit than a 
general/scientific one. But if this is true, then perhaps gambas lacks a 
CURRENCY data type, or a mean to use a currency/monetary representation 
inside format$(). By the way, a CURRENCY data type could come handy by 
itself - I had some problems with rounding floating point values and, in 
all the places where calculations were done (simple additions and 
subtraction of numbers with only two decimals of precision, normal for 
currency), I had to modify the code and round down values myself - tired 
of "1.999,99999998" numbers...

In other languages the CURRENCY datatype is defined as an INT64 which, 
when printed or mixed with other numerical types, is first divided (or 
multiplied) by 10000 (ten thousands). In other words, the number 22,5 
(twentytwo and a half) is stored as the integer 225000. This way, all 
rounding errors are get rid of.

Regards,
Doriano




More information about the User mailing list