Вывод данных Float + String

Необходимо вывести на экран цифры с символом %, но при условии...
На картинке и формула и ошибка. Как это можно исправить?

Нравится

10 комментариев

а это вообще где?

А понял - ФР. Не знаю, тоже интересно

Трудно проверить, а по-тупому пробовали (преобразовать 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%', '')))]
Показать все комментарии