| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Ошибка при вводе дробных чисел |
| Автор: Гость_Артем 16.1.2006, 11:04 |
| Здравствуйте! Я написал программу в С++ Builder 6, в которой используются дробные числа. Ввод данных осуществляется при помощи текстовых окон LabeledEdit. На моём компьютере (у меня Windows XP) дробные числа вводить нужно с запятой (например 3,14159), а если программу запустить на компьютере с ОС Wndows 98, то нужно вводить числа с точкой (например 3.14159). Иначе появляется сообщение об ошибке:"... is not a valid floating point value". Подскажите мне, пожалуйста, как сделать так, чтобы числа можно было вводить и с точкой и с запятой вне зависимости от ОС. |
| Автор: Partizan 16.1.2006, 11:27 |
| float Num; Num = StrToFloat( StringReplace(LabeledEdit1->Text, '.', ',', TReplaceFlags()<< rfReplaceAll) ); |
| Автор: _hunter 16.1.2006, 11:57 |
| Partizan, а если на другой машине тоже нужно вводить с точкой? ;) нужно на DecimalSeparator менять... |
| Автор: Гость_Артем 16.1.2006, 11:59 |
| Большое Вам спасибо, Partizan! Теперь программа работает. Буду Вам очень признателен, если Вы ответите еще на один вопрос: В чем причина того, что программа на одном компьютере (ОС Windows XP) выдает одни результаты, а на другом (ОС Windows 98) - совсем другие, при одних и тех же исходных данных? Может быть это было связано с тем, что на одном компьютере я вводил дробные числа через запятую, а на другом - через точку? |
| Автор: Гость_Артем 16.1.2006, 12:09 |
| Hunter, расскажите, пожалуйста, подробнее про DecimalSeparator? Заранее спасибо |
| Автор: bigscorp 16.1.2006, 12:35 |
| float ваще отстой луче double использовать (ну это я к токому выводц пришел) про DecimalSeparator: при вводе отлови что вбивают . или , и меняй ее на DecimalSeparator так будет лучше, и еще отлови двойной ввод . или , , ну чтобы в результате число получилось "0"+AnsiString(DecimalSeparator)+"000"; - будет точно число с плавающей точкой на любой машине, не важно какие стандарты установлены а перед этим надо подключить #include <math.h> еще хорошая вещь FormatFloat("0.00", StrToFloat(Edit->Text)) |