:

## Displaying fractional or unity results with and without units

Maple

I'm an engineer and when showing results of calculations, some values will display as fractions, and I would prefer that instead floating numbers are displayed.  Also, there is kind of a quirk where if the multiplier of a unit is 1, the result displays as a unit only. I would prefer to see 1*A rather than A.

I wrote this simple proc to convert a value with or without attached unit to a floating point number if it is a fraction or if it has a unit and the coefficient is 1.

Let me know if there is a more elegant way to do this or you have any suggestions or questions.

unrationalize := proc(x)
local
returnval,
localcoeff,
localunit
;
description
"Converts a fractional number to float",
"Units are supported"
;
if type(x, fraction) or type(x, with_unit(fraction)) then
returnval := evalf(x)
elif type(x, with_unit(1, 'localcoeff', 'localunit')) then
returnval :=  evalf(localcoeff)*localunit
else
returnval := x;
end if;
return returnval;
end  proc;
# Testing the proc
list1 := [1/2, 1/2*Unit(('A')/('V')), 1, Unit('A')];
listDescription := ["Fraction", "Fraction with Unit", "Unity", "Unity with Unit"];
for i, myValue in list1 do
[listDescription[i], "evalf:", evalf(myValue), "unrationalize:", unrationalize(myValue)];
end do;

﻿