Необходимо вывести на экран цифры с символом %, но при условии...
На картинке и формула и ошибка. Как это можно исправить?
Нравится
а это вообще где?
А понял - ФР. Не знаю, тоже интересно
Трудно проверить, а по-тупому пробовали (преобразовать float в string)?
(IIF(YearAll[1,1] > 0, (Round((YearAll[1,1]/YearAll[2,1]-1)*1000)/10).ToString() + '%', ''))
Ну вот почему у меня всегда срабатывает "эффект вопроса"? :lol:
Месяц мучалась над этими процентами, и в результате, через 5 минут после написания поста я нашла решение :
[(IIF(YearAll[1,1] > 0, FloatToStr(Round((YearAll[1, 1]/YearAll[2, 1]-1)*1000)/10) + '%' , ''))]
Только теперь проблема формата... Как сохранить 1 цифру после запятой?
"Сазанов Александр Владимирович" написал:Трудно проверить, а по-тупому пробовали (преобразовать float в string)?
(IIF(YearAll[1,1] > 0, (Round((YearAll[1,1]/YearAll[2,1]-1)*1000)/10).ToString() + '%', ''))
Такой вариант дает ошибку :
Хотя все скобки открыты/закрыты...
"Наталия П." написал:Только теперь проблема формата... Как сохранить 1 цифру после запятой?
Попробуйте .toFixed(1) перед тем как переводить в строку
"Сазанов Александр Владимирович" написал:Попробуйте .toFixed(1) перед тем как переводить в строку
Опять дурдом со скобками, хотя я все выверила. И даже цифры подставила, для удобства читаемости :
(IIF(YearAll[1,1] >0, FloatToStr(Round((2000/1000*1000)/10).toFixed(1)) + '%', ''))
Я так понял формулой Round((YearAll[1,1]/YearAll[2,1]-1)*1000)/10 вы и хотели 1 знак после запятой. И когда целое, то у вас нет запятой, так?
Ну а так вообще лучше не замарачиваться, и забивать формулы в ячейку думаю не стоит. По моему лучше создать вычисляемое поле в датасете и в скрипте в функции OnDatasetCalcFields все, что угодно туда внести.
Не знаю, откуда берутся YearAll[1,1] и YearAll[2,1], но раз они в отчете, то и программно их можно посчитать.
И скрипт будет таким примерно:
function ds_TestReportOnDatasetCalcFields(Dataset) { Dataset('CalcStr') = ''; if (YearAll[1,1]>0) { var RealFloat = (YearAll[1,1]/YearAll[2,1]-1)*100; Dataset('CalcStr') = ((RealFloat).toFixed(1)).toString() + '%'; } }
Ну если все же в скрипте никак, попробуйте формулу.
[IIF((Pos(',',FloatToStr(Round((YearAll[1,1]/YearAll[2,1]-1)*1000)/10)))>0 , (IIF(YearAll[1,1]>0, FloatToStr(Round((YearAll[1,1]/YearAll[2,1]-1)*1000)/10) + '%', '')) , (IIF(YearAll[1,1]>0, FloatToStr(Round((YearAll[1,1]/YearAll[2,1]-1)*1000)/10) + ',0%', '')))]