On Thursday, August 24, 2006, at 1:19 PM, Hal Fulton wrote:
>Paul Lutus wrote:
>> Calamitas wrote:
>>
>>
>>>I've not addressed the temperature problem as I'm still not very happy
>>>with it. My current opinion is that maybe temperature conversion
>>>should be done by separate methods, and only Kelvin should be allowed
>>>in the whole units machinery.
>>
>>
>> If you only have Kelvin and no other temperature units, no
>>conversions can
>
>Since he says "in the machinery," I think he means internally it would
>all be in Kelvin.
>
>I'm assuming every measure has a "default" unit (e.g., meter) and that
>all conversions go there first.
>
>Maybe not -- but that's how I'd do it. Convert feet to furlongs by first
>converting feet to meters and then meters to furlongs. That way there
>are fewer conversion factors required. Of course, significant digits
>become a problem, but I have to assume the library user worries about
>that.
>
>
>Hal
>

Yes, you need to do a lot of conversion to base units to make things
work nicely.

BTW...

def test_ideal_gas_law
p = Unit "100 kPa"
v = Unit "1 m^3"
n = Unit "1 mole"
r = Unit "8.31451 J/mol*degK"
t = ((p*v)/(n*r)).to("tempF")
assert_in_delta 21189.2,t.to_f, 0.1
end

p t.to_s #=> '21189.2 degF'

This test passes.

Note the use if the 'tempF' unit for conversion.  This unit doesn't
really exist in ruby-units, it just tells the conversion routine to do
the proper math to convert the internal differential temperature units
into an absolute one.

This seems like an acceptable compromise to me.

_Kevin
www.sciwerks.com

--