Еще лучше, чем использование десятичных чисел использует просто старые целые числа (или возможно некоторый bigint). Таким образом, у Вас всегда есть самая высокая возможная точность, но точность может быть определена. Например, номер 100
мог означать 1.00
, который отформатирован как это:
int cents = num % 100;
int dollars = (num - cents) / 100;
printf("%d.%02d", dollars, cents);
, Если Вам нравится иметь больше точности, можно изменить 100 на большее значение, как: 10 ^ n, где n является количеством десятичных чисел.
^[A-Za-z0-9_.]+$
От начала до конца строки сопоставьте один или несколько из этих символов.
Изменить:
Обратите внимание, что ^
и $
соответствуют началу и концу строки . Если включен многострочный режим, это может означать, что соответствует одна строка, но не вся строка.
Используйте \ A
для начала строки и \ z
для конца .
См., Например: http://msdn.microsoft.com/en-us/library/h5181w5w (v = vs.110) .aspx
Работаем с чего вы дали Я предполагаю, что вы хотите проверить, что кто-то НЕ ввел никаких букв, кроме тех, которые вы указали. Чтобы это работало, вы хотите найти любые символы, кроме перечисленных:
[^A-Za-z0-9_.]
И использовать это в совпадении в вашем коде, например:
if ( /[^A-Za-z0-9_.]/.match( your_input_string ) ) {
alert( "you have entered invalid data" );
}
Как это?
Возможно, вам нужно более точно указать, что не сработало и в какой среде вы находитесь.
Что касается утверждения о том, что точка является особенной в классе символов, это не верно в любой среде программирования. Например, следующий сценарий perl
use warnings;
use strict;
my $str = '!!!.###';
$str =~ s/[A-Za-z_.]/X/g;
print "$str\n";
создает
!!!X###