Страница 1 из 1

DobleToStr

Добавлено: 19 дек 2006, 11:34
Ruh
Пытаюсь вывести числа в строковом виде

Код: Выделить всё

doubleToStr('21.215','\m4 руб. \f\2p5 коп.') 
получается
двадцать один руб. двадцать два сотых коп.
то есть он, по идеи, должен писать две в женском роде, а пишет в мужском. (Пример взят из хелпа).
Есть ли какие-нибудь способы сделать окончание в женском роде?

Добавлено: 19 дек 2006, 13:34
Alexander
Doubletostr(22.225,'\m4 р. \2p\f5 к.')

Добавлено: 22 дек 2006, 07:47
Ruh
Alexander писал(а):Doubletostr(22.225,'\m4 р. \2p\f5 к.')
Тоже самое получается. Сам пробовал делать?

Добавлено: 22 дек 2006, 14:15
aleks1232321
doubletostr(25,' \m4 руб.')+' '+doubletostr(21,'\f4 коп.')
Т.е. выделяешь целую часть. Потом выделяешь дробную, приводя ее к целому виду

А := 25.21 // исходное число
В := integer(A) // целая часть
C := integer((A-integer(A))*100) // дробная часть

doubletostr(B,' \m4 руб.')+' '+doubletostr(C,'\f4 коп.')
двадцать пять руб. двадцать одна коп.

или сразу
doubletostr(integer(A),'\m4 руб.')+' '+doubletostr(integer((A-integer(A))*100),'\f4 коп.')

Добавлено: 25 дек 2006, 08:41
Alexander
Ruh
у меня так все работает...

Добавлено: 25 дек 2006, 11:13
aleks1232321
Alexander писал(а):Ruh
у меня так все работает...
Doubletostr(22.225,'\m4 р. \2p\f5 к.') = 'ноль р. двадцать две сотых к.'

Добавлено: 26 дек 2006, 09:47
Alexander
Doubletostr(22.225,'\m4 р. \2p\f5 к.') = 'двадцать два р. двадцать три сотых к.'
кстати пример из документации у меня тоже нормально отрабатывает,
doubleToStr('22.225','\m4 р. \f\2p5 к.') = 'двадцать два р. двадцать три сотых к.'

Добавлено: 26 дек 2006, 10:55
aleks1232321
В любом случае, разве "двадцать три сотых к" это правильно? :-o

Добавлено: 26 дек 2006, 12:31
Alexander
aleks1232321
а как по-вашему должно делаться округление? В данном примере делается округление до сотых(параметр \2р - до сотых). Так что
22.225 ~ 22.23
все правильно!
Делайте либо так:
doubleToStr(Trunc('22.225',2),'\m4 р. \f5 к.') = 'двадцать два р. двадцать две сотых к.'
либо так:
doubleToStr('22.225','\m4 р. \f4 к.') = 'двадцать два р. двадцать две к.'

Добавлено: 26 дек 2006, 13:49
aleks1232321
Может оно и правильно, наверняка правильно, но вот не всегда у меня, почему-то работает такое выражение doubleToStr('22.31','\m4 р \f4 к'). Поэтому приходится изгалаяться. :o

Добавлено: 27 дек 2006, 08:58
Alexander
Магия!!! :-D
Бубен и барабан должны быть у каждого программиста!!! :-)
У меня вот есть, иногда помогает.... :-D

Добавлено: 27 дек 2006, 13:13
dp
можно использовать функцию DoubleToString(comp,double)
где comp - nrec валюты ( 0 - для НДЕ), double - сумма
и практически всегда будет успех

Добавлено: 27 дек 2006, 15:04
aleks1232321
А это начиная с какой версии присутствует?
Что-то не нашел ничего похожего

Добавлено: 28 дек 2006, 19:06
dp
Что-то не нашел ничего похожего
а что в какой-то версии не работает?

Добавлено: 28 дек 2006, 19:11
aleks1232321
1.2.6. Функция DoubleToStr (Double, String) : String
Назначение
Преобразование числа в строку с учетом формата. Форматный перевод вещественных чисел в строку в основном используется для вывода результатов, связанных с деньгами.
Описание
function DoubleToStr (Num : Double, Format : String) : String;
Параметры
Num : Double - число, которое необходимо преобразовать в строку.
Format : String - формат.