Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2022-05

StdConvs: conversion to/from Kelvin is wrong?

1 message · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Bart

Fpc 3.3.1

===
  D := ConvUtils.Convert(100.0, tuCelsius, tuKelvin);
  write('100.0 Celsius       --> ',D:12:4,' Kelvin --> ');
  D := ConvUtils.Convert(D, tuKelvin, tuCelsius);
  writeln(D:12:4, ' Celsius');
  D := ConvUtils.Convert(100.0, tuFahrenheit, tuKelvin);
  write('100.0 Fahrenheit    --> ',D:12:4,' Kelvin --> ');
  D := ConvUtils.Convert(D, tuKelvin, tuFahrenheit);
  writeln(D:12:4, ' Fahrenheit');
  D := ConvUtils.Convert(100.0, tuRankine, tuKelvin);
  write('100.0 Rankine       --> ',D:12:4,' Kelvin --> ');
  D := ConvUtils.Convert(D, tuKelvin, tuRankine);
  writeln(D:12:4, ' Rankine');
  D := ConvUtils.Convert(100.0, tuReamur, tuKelvin);
  write('100.0 Reamur        --> ',D:12:4,' Kelvin --> ');
  D := ConvUtils.Convert(D, tuKelvin, tuReamur);
  writeln(D:12:4, ' Reamur');
===

Outputs:
100.0 Celsius --> 100.0000 Kelvin --> 100.0000 Celsius 100.0 Fahrenheit --> 55.5556 Kelvin --> 100.0000 Fahrenheit 100.0 Rankine --> 55.5556 Kelvin --> 100.0000 Rankine 100.0 Reamur --> 125.0000 Kelvin --> 100.0000 Reamur

I think the correct output should be
100.0 Celcius --> 373.1500 Kelvin --> 100.0000 Celcius 100.0 Fahrenheit --> 310.9278 Kelvin --> 100.0000 Fahrenheit 100.0 Rankine --> 55.5556 Kelvin --> 100.0000 Rankine 100.0 Reamur --> 398.1500 Kelvin --> 100.0000 Reamur

See https://en.wikipedia.org/wiki/Conversion_of_units#Temperature There is adding/subtracting involved in the calculations, not jus a single conversion factor.

Bart

Reply by email