Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Преобразование символьную строку в числовую  [new]
Kulakov Oleg
Member

Откуда:
Сообщений: 54
Всех с наступающим.
Имеется символьная строка. Как преобразовать в числовую, без обобщения?

st="53,12"
?val(st)
выдает 53,00
31 дек 08, 08:12    [6639165]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование символьную строку в числовую  [new]
VictorSK
Member

Откуда:
Сообщений: 72
Посмотрите какой у Вас разделитель в настройках ',' или '.'. Скорее всего '.'
Попробуйте 'st="53.12"'. val() преобразует все нормально.
31 дек 08, 08:21    [6639178]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование символьную строку в числовую  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Kulakov Oleg
Всех с наступающим.
Имеется символьная строка. Как преобразовать в числовую, без обобщения?

st="53,12"
?val(st)
выдает 53,00

Насчет запятой не описались? Может точка?
Если нет, то можно и так: VAL(STRTRAN(st, ',','.'))
или так:
SET POINT TO ','
? VAL(st)
SET POINT TO
С уважением, Алексей.
31 дек 08, 08:26    [6639183]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование символьную строку в числовую  [new]
Kulakov Oleg
Member

Откуда:
Сообщений: 54
Извините новичка за ошибку, там точка.
'53.12'
?val('53.12')
возвращает 53, а мне надо 53.12
31 дек 08, 09:09    [6639260]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование символьную строку в числовую  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Kulakov Oleg
Извините новичка за ошибку, там точка.
'53.12'
?val('53.12')
возвращает 53, а мне надо 53.12

А что возвращает ? SET("Decimals")
С уважением, Алексей
31 дек 08, 09:33    [6639319]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование символьную строку в числовую  [new]
Dima T
Member

Откуда:
Сообщений: 15296
Я один раз свою функцию написал и ей пользуюсь
* Преобразование строки в число независимо от разделителя
func ValWithPoint
lpara lcT
return val(chrtran(lcT, ',.', set('point') + set('point')))
31 дек 08, 09:55    [6639402]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование символьную строку в числовую  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Dima T
Я один раз свою функцию написал и ей пользуюсь
* Преобразование строки в число независимо от разделителя
func ValWithPoint
lpara lcT
return val(chrtran(lcT, ',.', set('point') + set('point')))

И спасает от SET DECIMALS TO 0 ? :)
С уважением, Алексей
31 дек 08, 10:51    [6639673]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование символьную строку в числовую  [new]
Dima T
Member

Откуда:
Сообщений: 15296
Aleksey-K
И спасает от SET DECIMALS TO 0 ? :)

А чего от него спасать? Этот SET только для вывода. На расчеты никак не влияет.
SET DECIMALS TO 0
q = ValWithPoint('123.45678')
? q  && =123
? str(q, 12, 5)  && =123.45678
31 дек 08, 11:28    [6639822]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование символьную строку в числовую  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Dima T
Aleksey-K
И спасает от SET DECIMALS TO 0 ? :)

А чего от него спасать? Этот SET только для вывода. На расчеты никак не влияет.
SET DECIMALS TO 0
q = ValWithPoint('123.45678')
? q  && =123
? str(q, 12, 5)  && =123.45678

В вы вопрос почитайте внимательно Kulakov Oleg.
У него именно при выводе на экран нет дробной части!
С уважением, Алексей
31 дек 08, 11:32    [6639833]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование символьную строку в числовую  [new]
Dima T
Member

Откуда:
Сообщений: 15296
Aleksey-K
В вы вопрос почитайте внимательно Kulakov Oleg.
У него именно при выводе на экран нет дробной части!

Упс ... Тогда явно форматировать надо через STR()
st="53,12"
? str(val(st), 10, 2)
31 дек 08, 11:41    [6639857]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование символьную строку в числовую  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Dima T
Aleksey-K
В вы вопрос почитайте внимательно Kulakov Oleg.
У него именно при выводе на экран нет дробной части!

Упс ... Тогда явно форматировать надо через STR()
st="53,12"
? str(val(st), 10, 2)

А если почитать его следующее сообщение...
С уважением, Алексей
31 дек 08, 11:52    [6639912]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить