Вниз
Скачать: CL | DM;

как выявить, что число не real?   Найти похожие ветки 

 
Zheks ©   (2004-01-19 16:27) [0]

помогите разобраться, мне нужно перевести предположим строку ".00345" в real(0.00345), но может попасться число 3.34566, тогда простым прибавлением нуля не обойтись. Т.Е. нужно что то типа:
if "число " = real then ...(3.00345)
else "0" + .00345


 
WondeRu ©   (2004-01-19 16:38) [1]

if trunc(число) <> 0 then


 
Ega23 ©   (2004-01-19 16:39) [2]


> WondeRu © (19.01.04 16:38) [1]
> if trunc(число) <> 0 then

Неправда.
if (Trunc(число)-число)<>0 then ...


 
WondeRu ©   (2004-01-19 16:41) [3]

if str[1]= "." then a := strtofloat(str1)
else a := strtofloat("0" + str1);


 
Ega23 ©   (2004-01-19 16:43) [4]


> помогите разобраться, мне нужно перевести предположим строку
> ".00345" в real(0.00345), но может попасться число 3.34566,
> тогда простым прибавлением нуля не обойтись. Т.Е. нужно
> что то типа:
> if "число " = real then ...(3.00345)
> else "0" + .00345

Я так понимаю, тебе анализ вводимой строки нужно делать.


 
Stas ©   (2004-01-19 16:46) [5]

А ЕСЛИ ПОПАЛАСЬ БУКВА ?
Лучше tryStrtofloat


 
Ega23 ©   (2004-01-19 16:46) [6]

И, кстати, число может быть 3.0. Тогда Trunc(3.0)-3.0 будет 0

> Zheks © (19.01.04 16:27)

Сформулируй задачу точнее.


 
WondeRu ©   (2004-01-19 16:46) [7]

Неправда.
прогнал! всю ночь просто пил, утром не позавтракал, теперь кушать дико охота!))


 
Ega23 ©   (2004-01-19 16:47) [8]


> Stas © (19.01.04 16:46) [5]

Лучше Val, ИМХО. В соседней ветке как раз дисскуссия идёт.


 
AKul ©   (2004-01-19 16:49) [9]

Используй StrToFloat. Она "понимает" и ".01", главное чтобы разделитель десятичной и дробной части совпадал с переменной DecimalSeparetor.
P.S. "0"+"3.445" = "03.445", а разве это не вещественное число?


 
AKul ©   (2004-01-19 16:52) [10]

Sorry, описАлся (DecimalSeparetor) надо - DecimalSeparator


 
WondeRu ©   (2004-01-19 16:52) [11]

>главное чтобы разделитель десятичной и дробной части совпадал с >переменной DecimalSeparetor.

я так делаю:

function StrToReal(str1: String): Real;
var
i: Byte;
begin
str1 := Trim(str1);
i := pos(".", str1);
if i <> 0 then str1[i] := ",";
Result := StrToFloat(str1);
end;


 
AKul ©   (2004-01-19 17:01) [12]


> я так делаю:

Это только в том случае, если в DecimalSeparator находится ","!!!
(А это все зависит от настроек)
P.S.: Делать можно как угодно, но не всегда сделанное будет работать.


 
Ega23 ©   (2004-01-19 17:06) [13]

Не, вопрос-то интересный: "Как выявить, что число не Real"?


 
WondeRu ©   (2004-01-19 17:13) [14]

>Делать можно как угодно, но не всегда сделанное будет работать
согласен!

>Не, вопрос-то интересный: "Как выявить, что число не Real"?
сформулируем по другому: "Как выявить, что число Unreal"?


 
Anatoly Podgoretsky ©   (2004-01-19 17:26) [15]

Оба указаных числа Real



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.021 c
14-2378
Driverrr
2004-01-09 18:20
2004.02.02
Нужен исходник...


14-2319
ghg
2003-12-22 15:41
2004.02.02
звук со звуковухи в файл mp3


1-2226
лошок
2004-01-20 15:21
2004.02.02
Как ограничить размер текстового файла


1-2138
pasha_golub
2004-01-19 14:20
2004.02.02
Взаемодействие Делфи 6 и CorelDraw 11


14-2320
CyberFreak
2004-01-11 21:48
2004.02.02
Опять червь? Или у меня мания преследования?...




   Наверх