152.4 is half a ft so your input into the function should be 0.5. There is no reason to consider it being 152.4 you are just taking the value in internal units from the wall layer of 0.5 and feeding that into the function. The output is then in whatever units are used in the FormatOptions.
Depending on midpoint rounding 0.1524 rounded to 0.1 is 0.2 (it seems your output units are likely still in m for some reason).
0) Get units from document Document.GetUnits
1) Get the format options from the Units Units.GetFormatOptions(SpecTypeId)
2) Change the unit format options
3) Put the changed unit FormatOptions back: Units.SetFormatOptions(ForgeTypeId, FormatOptions)
4) Use UnitFormatUtils(Units, ForgeTypeId, Double, Boolean)
or
0) Get units from document Document.GetUnits
1) Get the format options from the Units Units.GetFormatOptions(SpecTypeId)
2) Change the unit format options
3) Put the changed unit FormatOptions back: FormatValueOptions.SetFormatOptions(FormatOptions)
4) Use UnitFormatUtils(Units, ForgeTypeId, Double, Boolean, FormatValueOptions)
You've not fully done either of these processes above, the thing you haven't done is the thing I underlined above.
When you use 'new FormatOptions' consider the defaults as not being taken from the document, there is no argument for document so how can it know which document you are dealing with? It doesn't even know which spec it is formatting unless you provide that similar to below but again how the units in that relate to units in a document when it is created in isolation is vague (so I wouldn't use it).
Refer also to the difference between:
New FormatOptions
New FormatOptions(ForgeTypeId)
Noted in RevitAPI.chm
The majority of the time you want to just format units the way that they are formatted for the user in the UI. So you pass the Units from the Document into the function without change. Doing something else often requires reinventing the UI of the unit formatting settings. For example, what if your user is using Imperial not Metric are you going to then allow them to decide between ft/inches/ft and fractional inches with settings for all the rounded fractions etc. Are you going to invent an alternative unit settings interface for all of that or just avoid people that use that in North America? By dealing with units independently you are kind of building in cultural limitations.
However, a classic issue for me is that level elevations should be in m but if the default for length is mm I need to do something special because there is no distinction between Elevation and Length in the unit system. The metric level head magically deals with this contradiction: it has a label that displays the Elevation in m even though there is nothing to suggest it should do that (since spec for Elevation parameter is length which is in mm).
Cases like that is what I would use it for.