Validating number in perl
Otherwise known as Often, Tcl code shouldn't need to care about the size of an integer, so string is entier is probably what you want. For more background on the limits of string is integer through history, see 32-bit integer overflow. \u FF10-\u FF19 are "fullwidth" variants of 0-9, etc.
Some examples:% string is integer -1234 1 % string is integer 0xdeadbeef ;# hex is fine too 1 % string is integer 007 ;# so is octal ... 0 % string is integer "" 1 % string is integer -strict "" 0 % string is integer 12345678999 ;# too big for 32 bits! Lars H: Quite a lot, as you can see; there are plenty of digit sets in Unicode.
I figured it out with a quick explode on the number before formatting. For Zero fill - just use the sprintf() function$pr_id = 1;$pr_id = sprintf("d", $pr_id);echo $pr_id;//outputs 001-----------------$pr_id = 10;$pr_id = sprintf("d", $pr_id);echo $pr_id;//outputs 010-----------------You can change d to d, etc.
// Here is a function that produces the same output as number_format() but also works with numbers bigger than 2^53.function a_number_format($number_in_iso_format, $no_of_decimals=3, $decimals_separator='.', $thousands_separator='', $digits_grouping=3)$original_number= 9223372036854775805;echo a_number_format($original_number, 4, '.',"'",3);// Outputs: 9'223'372'036'854'775'805.1230 Just an observation: The number_format rounds the value of the variable.$val1 = 1.233;$val2 = 1.235;$val3 = 1.237;echo number_format($val1,2,",","."); // returns: 1,23echo number_format($val2,2,",","."); // returns: 1,24echo number_format($val3,2,",","."); // returns: 1,24 I'm not sure if this is the right place anyway, but "ben at last dot fm"'s ordinal function can be simplified further by removing the redundant "floor" (the result of floor is still a float, it's the "%" that's converting to int) and outer switch.
0 % string is entier 12345678999 1 0 - zero is always valid 56789 - lack of leading zeros - decimal 0x ABCDE - leading 0x or 0X - hexadecimal 034567 - leading 0 - octal 0o34567 - leading 0o or 0O - octal (Tcl 8.5 ) 0b01010 - leading 0b or 0B - binary (Tcl 8.5 )NLast 2010-01-06 : Thank you AMG for sharing your opinion. The main reason is absence of class "octal" (or "hexadecimal"): we only have class "integer". I just expected nn format for octals was inherited from C. Yes it's prone to bugs - especially when you're trying to calculate time. The authorative source on the subject should be the Unicode Character Database (see  for format and links), but whether Tcl really uses that is another matter.
If you're a Perl developer, the single largest repository of these tools is the Comprehensive Perl Archive Network (CPAN) which has hundreds of classes for form generation, testing and processing.This can save you (and them) a lot of time and trouble!It's possible to do form validation using Java Script (see our Form validation with Java Script tutorial).function numberfix($number) For use in: In my function my_number_format() [shown below] there was a bug.
If a negative number which is smaller than 1 was entered (-0,...), then the result was wrongly positive because 0 is equal to -0 (the content of $tmp which was interpretet as numeric value).
Java Script validation is nice and quick because there's no round-trip to the server; however Perl validation is more secure and reliable, because it will always work even if the browser has Java Script disabled, or if the user has managed to "hack" the Java Script validation.