powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Разделитель тысяц
14 сообщений из 14, страница 1 из 1
Разделитель тысяц
    #33076573
kms_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем времени суток!

Ребяты есть вопрос нужна функция для перевода числа в текстовый формат, причем с использованием разделителя тысяц.
Например есть число: 56845345.21
Надо получить '56 845 345.21'

Начал писать свою, но подумал, а что если есть фоксовская? Чего извращаться-то?

Заранее благодарен!

P.S. У меня фокс 5.0
...
Рейтинг: 0 / 0
Разделитель тысяц
    #33076595
гость 37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
set mark to ' '
?transform( 123456789 ,'999,999,999')
...
Рейтинг: 0 / 0
Разделитель тысяц
    #33076596
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для 5.0 - не уверен, но в 6 это работает

Код: plaintext
?TRANSFORM( 56845345 . 21 ,"999 999 999 999.99")
...
Рейтинг: 0 / 0
Разделитель тысяц
    #33076600
гость 38
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМДля 5.0 - не уверен, но в 6 это работает

Код: plaintext
?TRANSFORM( 56845345 . 21 ,"999 999 999 999.99")

Работает и в 5.
...
Рейтинг: 0 / 0
Разделитель тысяц
    #33076601
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
? TRANSFORM(123456.78, '999 999 999 999.99')
...
Рейтинг: 0 / 0
Разделитель тысяц
    #33076614
kms_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чувствовал же, что не может не быть!

Всем большое спасибо! Что-то раньше я как-то функцию TRANSFORM() стороной обходил, видно зря!
...
Рейтинг: 0 / 0
Разделитель тысяц
    #33076653
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем не устраивает SET SEPARATOR TO " " ?
С уважением, Алексей.
...
Рейтинг: 0 / 0
Разделитель тысяц
    #33076688
kms_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksey_KА чем не устраивает SET SEPARATOR TO " " ?
Честно говоря, Transform() меня полностью устроила... но для интереса хотел бы узнать как использовать SET SEPARATOR TO " ", а то что-то я не разобрался!
...
Рейтинг: 0 / 0
Разделитель тысяц
    #33076701
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
угу
SET SEPARATOR TO '#'
gnX = 1000
@ 2,2 GET gnX PICTURE '9,999.99'
READ
SET SEPARATOR TO && Reset the separator to a comma (,)

а вот уже из МСДН
Included for backward compatibility . Use the Digit grouping symbol setting of the Windows Regional Options Control Panel instead.

Примерчик как его использовать плиз, а то я не понял про что Вы
...
Рейтинг: 0 / 0
Разделитель тысяц
    #33076741
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос Алексея был не к тебе, а к гость 37

Дело в том, что при указании маски вывода числа в команде Transform() можно использовать специальные зарезервированные символы

Код: plaintext
?TRANSFORM( 56845345 . 21 ,"999,999,999,999.99")

В данном случае символы запятой и точки - это не есть реальные символы, которые будут отображены в полученной строке. Это некие "кодовые обозначения"

9 - в этом месте может быть любая цифра, или знак минус, или знак плюс
"запятая" - в этом месте должен стоять символ-разделитель троек цифр
"точка" - в этом месте должен стоять символ-разделитель целой и дробной части числа

Настройка SET SEPARATOR как раз и отвечает за то, какой именно символ будет использоваться в качестве разделителя троек чисел. А настройка SET POINT отвечает за то, какой разделитель будет использован в качестве разделителя целой и дробной части числа.

Проверь:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
* Настройки FoxPro по умолчанию
SET POINT TO
SET SEPARATOR TO
?TRANSFORM( 56845345 . 21 ,"999,999,999,999.99")

SET POINT TO "-"
SET SEPARATOR TO "`"
?TRANSFORM( 56845345 . 21 ,"999,999,999,999.99")

SET POINT TO ","
SET SEPARATOR TO " "
?TRANSFORM( 56845345 . 21 ,"999,999,999,999.99")

* Используем системные настройки Windows
SET SYSFORMATS ON
?TRANSFORM( 56845345 . 21 ,"999,999,999,999.99")

* Возвращаем настройки по умолчанию
SET POINT TO
SET SEPARATOR TO

Настройка SET MARK отвечает за символы разделители в датах (отделяет дни, месяцы и годы между собой)

Когда в маске вывода был использован пробел, то это был не какой-то условный символ, а непосредственно обычный символ, который надо печатать в этом месте. Там можно написать почти любую маску вывода

Код: plaintext
?TRANSFORM( 56845345 . 21 ,"@R ЧИСЛО 999--999--999--999.99")
...
Рейтинг: 0 / 0
Разделитель тысяц
    #33076772
kms_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, всегда удивляюсь насколько точно и исчерпывающе Вы отвечаете!

Огромное спасибо!
...
Рейтинг: 0 / 0
Разделитель тысяц
    #33076780
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хорошая лекция спасибо
...
Рейтинг: 0 / 0
Разделитель тысяц
    #33076921
гость 39
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конечно, SEPARATOR, а не MARK. Не проверил настройки по умолчанию и промазал, извиняюсь.
...
Рейтинг: 0 / 0
Разделитель тысяц
    #33077358
Crispy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2ВладимирМ
>Для 5.0 - не уверен, но в 6 это работает

Это и в FPD2.6 работает.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Разделитель тысяц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]