You are viewing a plain text version of this content. The canonical link for it is here.
Posted to qa@openoffice.apache.org by Lucien Mathay <MA...@live.fr> on 2022/06/23 12:39:06 UTC
isnumeric function
Hi again,
can anybody explain me why isnumeric("123D456") returns True ? (notice
well the "D")
To me it looks strange ... but maybe I miss something
Thanks,
Lucien.
Re: isnumeric function
Posted by Pedro Lino <pe...@gmail.com>.
It is clearly an odd bug
isnumeric("123E456") is also True but isnumeric("123DE456") is False...
Maybe there is a confusion with Hexadecimal numbers? But A,B,C and F is also False...
Anyone has a clue?
Regards,
Pedro
On Thursday 23 June 2022 14:26:33 (+01:00), Lucien Mathay wrote:
>
> Le 23/06/22 à 14:53, Dave a écrit :
> > Try =ISNUMBER("123D456") instead of =ISNUMERIC("123D456")
> Thank you and sorry, Dave, I forgot to specify that the question was related to Basic. ( msgbox ISNUMBER("123C456") sends "Basic error - function not defined" )
>
> In Basic thus, msgbox isnumeric("123D456") returns True, although it should return False, if I am not wrong ?
>
> Lucien
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: qa-unsubscribe@openoffice.apache.org
> For additional commands, e-mail: qa-help@openoffice.apache.org
>
>
--
Sent with Vivaldi Mail. Download Vivaldi for free at vivaldi.com
---------------------------------------------------------------------
To unsubscribe, e-mail: qa-unsubscribe@openoffice.apache.org
For additional commands, e-mail: qa-help@openoffice.apache.org
Re: isnumeric function
Posted by Lucien Mathay <MA...@live.fr>.
Thank you Dennis for this explanation. This is an answer to my original
question.
To know what is recognized as a number, someone should specify the grammar for such constants, and then there's something to QA against.
From what I see the grammar includes 'D' as a valid exponent marker, as
type conversion functions recognize 'D' as an exponent. Thus nothing to
QA on the side of 'isnumeric'.
However, after the tests I ran I discovered the following, which on my
opinion should be considered as bugs :
- CDbl("123E456") and CDbl("123D456") which enter an infinite loop,
- CDec("123E456") and CDec("123D456") which should raise an overflow
instead of returning 0
yours faithfully,
Lucien
Le 23/06/22 à 18:57, dennis.hamilton@acm.org a écrit :
> Lucien asked,
>
> " Is that a relic from prehistoric ages ?"
>
> Yes.
>
> E was the original exponent marker for what we would now call float values.
>
> D was added to distinguish double from (single-precision) float.
>
> This had nothing to do with (Visual) Basic (for Applications) originally.
>
> To know what is recognized as a number, someone should specify the grammar for
> such constants, and then there's something to QA against.
>
> - Dennis
>
> -----Original Message-----
> From: Lucien Mathay<MA...@live.fr>
> Sent: Thursday, June 23, 2022 08:12
> To:qa@openoffice.apache.org
> Subject: Re: isnumeric function
>
>
>
> Le 23/06/22 à 16:23, Dave a écrit :
>> Like Pedro, I can replicate your issue, but cannot explain it, other
>> than to say it might be that the function is seeing 123D456 as a Hex
>> value, which equates to Decimal 19.125.334.
>>
> Dave,
>
> the problem then is that 'A', 'B', 'C' and 'F' are not accepted
>
> Only 'D' and 'E' are accepted :
> - 'E' probably stands for Exponent, thus is should be valid character in the
> numeric string
> - 'D' : something like "Decimal" ?
> [orcmid] [ ... ]
>
> - I note that msgbox ("123D-456") also returns True : 'D' seems thus to behave
> like an exponent.
>
> Power of 10 maybe ?
>
> - lets test msgbox("123D3") : it prints out 123000 ; it seems thus
> perfectly equivalent to "123E3"
> Note that msgbox CDbl("123D3") does not loop but prints out 123000
>
> Is that a relic from prehistoric ages ?
>
> Lucien.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:qa-unsubscribe@openoffice.apache.org
> For additional commands, e-mail:qa-help@openoffice.apache.org
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:qa-unsubscribe@openoffice.apache.org
> For additional commands, e-mail:qa-help@openoffice.apache.org
>
RE: isnumeric function
Posted by de...@acm.org.
Lucien asked,
" Is that a relic from prehistoric ages ?"
Yes.
E was the original exponent marker for what we would now call float values.
D was added to distinguish double from (single-precision) float.
This had nothing to do with (Visual) Basic (for Applications) originally.
To know what is recognized as a number, someone should specify the grammar for
such constants, and then there's something to QA against.
- Dennis
-----Original Message-----
From: Lucien Mathay <MA...@live.fr>
Sent: Thursday, June 23, 2022 08:12
To: qa@openoffice.apache.org
Subject: Re: isnumeric function
Le 23/06/22 � 16:23, Dave a �crit :
> Like Pedro, I can replicate your issue, but cannot explain it, other
> than to say it might be that the function is seeing 123D456 as a Hex
> value, which equates to Decimal 19.125.334.
>
Dave,
the problem then is that 'A', 'B', 'C' and 'F' are not accepted
Only 'D' and 'E' are accepted :
- 'E' probably stands for Exponent, thus is should be valid character in the
numeric string
- 'D' : something like "Decimal" ?
[orcmid] [ ... ]
- I note that msgbox ("123D-456") also returns True : 'D' seems thus to behave
like an exponent.
Power of 10 maybe ?
- lets test msgbox("123D3") : it prints out 123000 ; it seems thus
perfectly equivalent to "123E3"
Note that msgbox CDbl("123D3") does not loop but prints out 123000
Is that a relic from prehistoric ages ?
Lucien.
---------------------------------------------------------------------
To unsubscribe, e-mail: qa-unsubscribe@openoffice.apache.org
For additional commands, e-mail: qa-help@openoffice.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: qa-unsubscribe@openoffice.apache.org
For additional commands, e-mail: qa-help@openoffice.apache.org
Re: isnumeric function
Posted by Lucien Mathay <MA...@live.fr>.
Le 23/06/22 à 16:23, Dave a écrit :
> Like Pedro, I can replicate your issue, but cannot explain it, other
> than to say it might be that the function is seeing 123D456 as a Hex
> value, which equates to Decimal 19.125.334.
>
Dave,
the problem then is that 'A', 'B', 'C' and 'F' are not accepted
Only 'D' and 'E' are accepted :
- 'E' probably stands for Exponent, thus is should be valid character in
the numeric string
- 'D' : something like "Decimal" ?
- in fact, as Basic states it is a number, I tried to print it out :
-> msgbox CLng("123D456") : raises an error stating an overflow
-> msgbox CDbl("123D456") : enters an infinite loop and you must
terminate the program to exit from this loop
-> msgbox CDec("123D456") : prints the value zero (0)
- I note that msgbox ("123D-456") also returns True : 'D' seems thus to
behave like an exponent.
Power of 10 maybe ?
- lets test msgbox("123D3") : it prints out 123000 ; it seems thus
perfectly equivalent to "123E3"
Note that msgbox CDbl("123D3") does not loop but prints out 123000
Is that a relic from prehistoric ages ?
Lucien.
---------------------------------------------------------------------
To unsubscribe, e-mail: qa-unsubscribe@openoffice.apache.org
For additional commands, e-mail: qa-help@openoffice.apache.org
Re: isnumeric function
Posted by Czesław Wolański <cz...@gmail.com>.
HI all,
Just a poorly educated guess:
In the source code, isNumeric()
http://openoffice-vm1-he-de.apache.org/xref/trunk/main/basic/source/runtime/methods.cxx?r=710acb7f#2472
leads to ImpScan()
http://openoffice-vm1-he-de.apache.org/xref/trunk/main/basic/source/sbx/sbxscan.cxx?r=323c3501#70
See the description given in lines 63-65
http://openoffice-vm1-he-de.apache.org/xref/trunk/main/basic/source/sbx/sbxscan.cxx?r=323c3501#63
and the code in line `153-154
http://openoffice-vm1-he-de.apache.org/xref/trunk/main/basic/source/sbx/sbxscan.cxx?r=323c3501#152
Best regards,
Czesław
Le jeu. 23 juin 2022 à 16:23, Dave <bm...@apache.org> a écrit :
>
>
> On 23/06/2022 14:26, Lucien Mathay wrote:
> >
> > Le 23/06/22 à 14:53, Dave a écrit :
> >> Try =ISNUMBER("123D456") instead of =ISNUMERIC("123D456")
> > Thank you and sorry, Dave, I forgot to specify that the question was
> > related to Basic. ( msgbox ISNUMBER("123C456") sends "Basic error -
> > function not defined" )
> >
> > In Basic thus, msgbox isnumeric("123D456") returns True, although it
> > should return False, if I am not wrong ?
> >
> > Lucien
>
> Ah! Star Basic
>
> IsNumeric is very picky about what it accepts.
> Print IsNumeric(" 123”) 'True
> Print IsNuneric(" 12 3”) 'False
> Print lsNumeric(1.23) 'True
> Print IsNumeric("123abc") 'False
> Print IsNuneric(True) 'False
> Print IsNumeric(Now) 'False
>
> See "Openoffice.Org Macros Explained by Andrew Pitonyak"
> https://www.pitonyak.org/book/ page 221
> Like Pedro, I can replicate your issue, but cannot explain it, other
> than to say it might be that the function is seeing 123D456 as a Hex
> value, which equates to Decimal 19.125.334.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: qa-unsubscribe@openoffice.apache.org
> For additional commands, e-mail: qa-help@openoffice.apache.org
>
>
Re: isnumeric function
Posted by Dave <bm...@apache.org>.
On 23/06/2022 14:26, Lucien Mathay wrote:
>
> Le 23/06/22 à 14:53, Dave a écrit :
>> Try =ISNUMBER("123D456") instead of =ISNUMERIC("123D456")
> Thank you and sorry, Dave, I forgot to specify that the question was
> related to Basic. ( msgbox ISNUMBER("123C456") sends "Basic error -
> function not defined" )
>
> In Basic thus, msgbox isnumeric("123D456") returns True, although it
> should return False, if I am not wrong ?
>
> Lucien
Ah! Star Basic
IsNumeric is very picky about what it accepts.
Print IsNumeric(" 123”) 'True
Print IsNuneric(" 12 3”) 'False
Print lsNumeric(1.23) 'True
Print IsNumeric("123abc") 'False
Print IsNuneric(True) 'False
Print IsNumeric(Now) 'False
See "Openoffice.Org Macros Explained by Andrew Pitonyak"
https://www.pitonyak.org/book/ page 221
Like Pedro, I can replicate your issue, but cannot explain it, other
than to say it might be that the function is seeing 123D456 as a Hex
value, which equates to Decimal 19.125.334.
---------------------------------------------------------------------
To unsubscribe, e-mail: qa-unsubscribe@openoffice.apache.org
For additional commands, e-mail: qa-help@openoffice.apache.org
Re: isnumeric function
Posted by Lucien Mathay <MA...@live.fr>.
Le 23/06/22 à 14:53, Dave a écrit :
> Try =ISNUMBER("123D456") instead of =ISNUMERIC("123D456")
Thank you and sorry, Dave, I forgot to specify that the question was
related to Basic. ( msgbox ISNUMBER("123C456") sends "Basic error -
function not defined" )
In Basic thus, msgbox isnumeric("123D456") returns True, although it
should return False, if I am not wrong ?
Lucien
---------------------------------------------------------------------
To unsubscribe, e-mail: qa-unsubscribe@openoffice.apache.org
For additional commands, e-mail: qa-help@openoffice.apache.org
Re: isnumeric function
Posted by Dave <bm...@apache.org>.
On 23/06/2022 13:39, Lucien Mathay wrote:
> Hi again,
>
> can anybody explain me why isnumeric("123D456") returns True ?
> (notice well the "D")
>
> To me it looks strange ... but maybe I miss something
>
> Thanks,
> Lucien.
Try =ISNUMBER("123D456") instead of =ISNUMERIC("123D456")
Same meaning, different terminology,
---------------------------------------------------------------------
To unsubscribe, e-mail: qa-unsubscribe@openoffice.apache.org
For additional commands, e-mail: qa-help@openoffice.apache.org