neither of these are “problems”, this is by design
format will round the value to fit the pattern therefore 1.5 shows as two because you provided no pattern for the fractional part
And as discussed on a very recent topic, the decimal point will alway be displayed if specified in the patten
you can do this to “solve” one of the issues you face
result=Format(FLOOR(value),"#,###,##0.###")
refer to the other topics for suggestions about the decimal point
static nationalDecimalPoint as string = replaceall( format(1.1,"0.0"), "1", "")
result=Format(value,"#,###,##0.###")
if result.right(1) = nationalDecimalPoint then
result = result.Left(result.len() - nationalDecimalPoint.Len())
end if