Помогите с FormatFloat()
f=3.09093993
FormatFloat("0.000",f); - Выводит 3 знака после точки.
И вот так приходится всегда выводить, что очень неудобно.
Вопрос такой, можно ли както "глобально" настроить, сколько знаков мне надо выводить при выводе переменных с плавающей точкой?
Вопрос второй.
В Edit'e Ввожу 24.234 - Хочу это перевести в float а оно выдаёт ошибку, просит, что б я разделял не точкой, а запятой, а как зделать так, что б я разделял не запятой а точкой.
В Edit'e Ввожу 24.234 - Хочу это перевести в float а оно выдаёт ошибку, просит, что б я разделял не точкой, а запятой, а как зделать так, что б я разделял не запятой а точкой. [/QUOTE]
Зависит от regional settings настроек-windows.
Как вариант:
1) можешь изменить их;
2) можно заменить "." на "," программно перед переводом;
3) можно самостоятельно перевести строку->число;
Мне в одной программе необходимо выводить значения в StringGrid с разным количеством знако после запятой, я вывожу следующим образом:
f=3.09093993
FormatFloat("0.000",f); - Выводит 3 знака после точки.
И вот так приходится всегда выводить, что очень неудобно.
Вопрос такой, можно ли както "глобально" настроить, сколько знаков мне надо выводить при выводе переменных с плавающей точкой?
Вопрос второй.
В Edit'e Ввожу 24.234 - Хочу это перевести в float а оно выдаёт ошибку, просит, что б я разделял не точкой, а запятой, а как зделать так, что б я разделял не запятой а точкой.
На первый вопрос: Попробуй создать массив char str[40], и функцией sprintf(str,"%f",znachenie) конвертить значение в строку. В таблице выводи текстовые строки.
Второй вопрос:
Создай свой класс проверяющий текст, в теле чтото вроде:
char str[20],*pstr;
int z=0;
pstr=str;
strcpy(pstr,Edit1->Text.c_str());
for(int i=0;i<strlen(pstr);i++)
{
if(*(pstr+i)=='0' || *(pstr+i)=='1' || * (pstr+i)=='2' || *(pstr+i)=='3'
|| *(pstr+i)=='4' ||*(pstr+i)=='5' ||*(pstr+i)=='6' ||*(pstr+i)=='7'
|| *(pstr+i)=='8' || *(pstr+i)=='9')
{
}
else
{
if(*(pstr+i)==',' || *(pstr+i)=='.')
{
*(pstr+i)=',';
z++;
}
else z=100;
}
}
if(z>1)
{
MessageDlg("Неверный формат данных",1,
TMsgDlgButtons() << mbAbort, 0);
}
return z;
Пользуясь функцией передаёшь указатель на строку, возвращаются исправленная строка и z. Если z>1 то в строке ошибки.
Можеш перед переводом просто проверить (если z>1) то строка содержит посторонние символы или много запятых. pstr - указатель на исправленную строку.
Вопрос второй.
В Edit'e Ввожу 24.234 - Хочу это перевести в float а оно выдаёт ошибку, просит, что б я разделял не точкой, а запятой, а как зделать так, что б я разделял не запятой а точкой.
Зависит от regional settings настроек-windows.
Как вариант:
1) можешь изменить их;
2) можно заменить "." на "," программно перед переводом;
3) можно самостоятельно перевести строку->число; [/QUOTE]
А вот как програмно изменить ети regional settings настроек-windows, И повлияет ли это на другие программы?
Зависит от regional settings настроек-windows.
Как вариант:
1) можешь изменить их;
2) можно заменить "." на "," программно перед переводом;
3) можно самостоятельно перевести строку->число;
А вот как програмно изменить ети regional settings настроек-windows, И повлияет ли это на другие программы? [/QUOTE]
Есть в Билдере глобальная переменная
char DecimalSeparator
она показывает чем отделяются целая и дробная часть. Попробуй менять ее
PS
Там есть еще ThousandSeparator, может пригодится