Subject: Re: bug#59531: 29.0.50: An alternative to `string-to-number` which throws an error (or returns a NIL value) when input is non-parseable as number

From: Eli Zaretskii <[email-masked]>
Date: Thu, 24 Nov 2022 10:00:06 +0200

tags 59531 wishlist
thanks

> Date: Thu, 24 Nov 2022 11:44:43 +0530
> From: Ramesh Nedunchezian <[email-masked]>
> 
> `string-to-number` returns ZERO if the input is not a number.  
> 
> 
> This return value is not very helpful.  The choice of a number ZERO as "Not A Number" doesn't help one to distinguish between the following two cases
> 
> (1) Input was a valid number, and it parses to number zero
> 
> (2) Input was NOT a valid number, and it was forcibly reported as ZERO
> 
> Consider amending `string-to-number` to throw an error (or return NIL) when the input is not parseable as a number, or providing an alternative API to validate numbers.  I am trying to parse some fields in an org table, and see if the field value is a number or not;

Thanks.

Changing the default behavior to signal an error is out of the question,
since this is used in the Lisp reader and elsewhere, all over the place.  It
is very useful there.

However, as an enhancement, we could have an additional optional argument to
request that the function signal an error if the string cannot be parsed as
a number.

> If there is already an alternative to what I am trying to accomplish, I would appreciate a recipe.

You could match the string to a regexp that validates its numerical
appearance, before calling string-to-number.