Консультация № 103672
28.09.2007, 10:09
0.00 руб.
0 4 4
Здравствуйте, подскажите плиз, как победить ситуацию:

Функция Right([summa];2)

при поле summa=195.20 возвращает значение ".2" а не "20" - т.е. не видит ноль.

При поле summa=195.21 все работает как часы и возвращается "21". Тоже самое происходит и с функциями len и left

Необходимо "учитывать" ноль.
PS. все поля фиксированные, 2 знака после запятой
Функцию использую в отчете.

Обсуждение

Неизвестный
28.09.2007, 11:01
общий
это ответ
Здравствуйте, Джефф!
Воспользуйтесь функцией FIXED для формирования правильного отображения количества знаков после запятой.


Приложение:
RIGHT(FIXED([summa],2),2)
давно
Профессионал
848
1596
28.09.2007, 11:08
общий
это ответ
Здравствуйте, Джефф!
Используйте следующую конструкцию
Right(FormatNumber([summa], 2),2)
Неизвестный
28.09.2007, 11:16
общий
это ответ
Здравствуйте, Джефф!
Дело в том, что right это функция для работы со стороками и сначала она преобразует ваше число в строку, затем отрезает 2 правых символа и возвращает их. В вашей ситуации я бы сделал так:
int(summa*100)-int(summa)*100
Неизвестный
28.09.2007, 19:29
общий
это ответ
Здравствуйте, Джефф!
Я тоже сталкивался с такой проблемой. Выход из положения у меня был такой:
Dim summa As String
Dim celayaChast As String
Dim drobnayaChast As String
summa = Worksheets("Лист1").Range("A1").Value
celayaChast = Fix(summa)
drobnayaChast = Mid(summa, Len(celayaChast) + 2)
Select Case Len(drobnayaChast)
Case 0
drobnayaChast = "00"
Case 1
drobnayaChast = drobnayaChast & "0"
End Select
summa = drobnayaChast
Форма ответа