This question is very much subject to taste. Here is a few ideas that may be tailored to the users' tastes. I happened to use time units for my example.
v1=Quantity[1,"Exaseconds"]
v2=Quantity[1,"Millenia"]
v3=Quantity[0.123000456,"seconds"];
unitList={"Eons","Megayears","Millenia","Years","Months","Days","Hours","Seconds","Milliseconds","Microseconds","Nanoseconds"}
human[quantity_Quantity,units_List]:= Block[
{result},
result=UnitConvert[quantity,MixedUnit[units]];
result=Evaluate[Select[{result[[1,1]],result[[2,1]]}\[Transpose],#[[1]]!=0&]\[Transpose]];
Quantity[MixedMagnitude[result[[1]]],MixedUnit[result[[2]]]]
]
human[v1,unitList]
human[v2,unitList]
human[v3,unitList]
approximate[quantity_Quantity,units_List]:= Block[
{result},
result=UnitConvert[quantity,MixedUnit[units]];
result=Evaluate[First[Select[{result[[1,1]],result[[2,1]]}\[Transpose],#[[1]]!=0&]]\[Transpose]];
Quantity@@result
]
approximate[v1,unitList]
approximate[v2,unitList]
approximate[v3,unitList]
1Es
1millennium
{Eons,Megayears,Millenia,Years,Months,Days,Hours,Seconds,Milliseconds,Microseconds,Nanoseconds}
31\[ThinSpace]eons709\[ThinSpace]Myr791\[ThinSpace]millennia458\[ThinSpace]yr2\[ThinSpace]mo25\[ThinSpace]days17\[ThinSpace]h2800\[ThinSpace]s
1millennium
123\[ThinSpace]ms456.\[ThinSpace]ns
31eons
1millennium
123ms
Here is a potentially useful utility function:
makeUnits = Function[base, (StringJoin[#1, base] & ) /@
{"quetta", "ronna", "yotta", "zetta", "exa", "peta",
"tera", "giga", "mega", "kilo", "", "milli", "micro",
"nano", "pico", "femto", "atto", "zepto", "yocto",
"ronto", "quecto"}]
{quettajoule,ronnajoule,yottajoule,zettajoule,exajoule,petajoule,terajoule,gigajoule,megajoule,kilojoule,joule,millijoule,microjoule,nanojoule,picojoule,femtojoule,attojoule,zeptojoule,yoctojoule,rontojoule,quectojoule}
human[Quantity[1,"eV"],unitList]
160\[ThinSpace]zJ217\[ThinSpace]yJ663\[ThinSpace]rJ400\[ThinSpace]qJ
human[Quantity[1,"kWh"],unitList]
3\[ThinSpace]MJ600\[ThinSpace]kJ
human[Quantity[1,"BTU"],unitList]
1\[ThinSpace]kJ55\[ThinSpace]J55\[ThinSpace]mJ852\[ThinSpace]\[Mu]J620\[ThinSpace]nJ
BytesToQuantity
,SecondsToQuantity
, andMetriNumberString
that might be relevant here. $\endgroup$UnitConvert
canonicalize units for you and work from there (see the docs) which gives you the "meta-category" $\endgroup$