A Better Temperature System

Last updated:

Yes, it's time for another installment of "Tab gives a utopian vision of an alternate today where people knew better in the past about some minor topic". Today we're talking about temperature.

What's Wrong With Temperature?

There's a lot wrong with temperature, unfortunately. The metric system uses Kelvins to measure temp. Kelvins are defined as "the same degree size as Celsius, but 0 is absolute zero". This has some issues:

  • having the scale's zero be a meaningful zero, so that doubling the number actually corresponds to doubling some physical quantity - is good
  • but having that zero be very far away from human-meaningful quantities, particularly the two primary things humans use temperature for on a regular basis (outside temp and body temp) is really inconvenient
  • the Celsius zero and the Kelvin zero are not a round, or even whole, number of degrees apart, so interconverting involves an awkward "273.16" factor.

A lot of this comes from the fact that we invented temperature scales long before we realized that temperature even had a physically-meaningful zero. Instead, Celsius just tied its 0 and 100 to measurable, somewhat-meaningful values for humans: the freezing and boiling point of water. The resulting delta from the "real" zero, and the size of the degree, thus have no particular reason to be convenient or "round", and yeah, they're really not.

We can do better!

But What About Fahrenheit?

Yeah, what about Fahrenheit? It's not SI, but it is still metric (base-10), and I think it has some very nice qualities as well (plus some pretty bad ones).

Obvious bad thing is that its 0/100 points are meaningless; 0°F is the freezing point of saturated salt water (which, tbf, was easier to obtain than purified water, and so a more reliable liquid for gauge calibration) and, uh, for some reason 100°F is based on him setting human body temperature to 96°F? So 100 wasn't even meaningful from the start??? Nowadays of course we use the same freezing/boiling point of water definition, which gives us the convenient 32/212 pair, how nice.

Fahrenheit actually has some great qualities, tho. While the freezing point is pretty rando, it does at least mean that the 0 point is roughly as cold as it gets in temperate parts of the world. (And measuring subzero is basically just for fun anyway; below that it's all "lethally cold" and the precise number doesn't matter anyway.) Similarly, 100 is roughly as hot as it gets in temperate parts of the world. This means that outside temps range nicely over the 0-100 range (vs the roughly -15 to 45 range for Celsius).

As well, the degree size is, in my opinion, a bit better. Ten degrees Fahrenheit is more or less the minimum temperature difference that makes a difference for how you dress and respond to the weather - you'll feel 70 and 80 as different and respond accordingly, but 70 and 75 are too close to care about the difference. (Celsius's similar bands are 5 degrees apart, which is kinda round but not as good.)

So Fahrenheit gives us a meaningful 0-100 range for our daily temperature usage, and has meaningful 10-degree bands as well. That's really nice! Sure would've been good to keep that around.

Let's Get It Right

Just to get one difficulty out of the way, we can't make a temperature system that's both human-meaningful for small numbers, and useful for physics. The two desired zero points (deep space vs frozen water) are too far apart.

What we can do, tho, is make it so that converting between the "human" and "absolute" scales is as easy as possible, so the two zeros are a whole, round number of degrees apart.

Taking all the above into account, I present to you the Degrees Temp (°T), or Absolute Temp (°AT) system, an ideal system that combines the best parts of everything:

Degrees Temp, the human-usable system, is defined by the freezing point of water at 20°, and absolute zero at -500°. °AT is just °T + 500.

The freezing point of water is not 0, but it is a round, easily-memorized and easily-recognized number. 0°T, instead, is a sub-freezing temp that is, again, roughly "as cold as a temperate climate gets", similar to Fahrenheit. Also similar, 100°T is roughly as hot as a temperate climate gets.

(Converted back into existing units, 0°T is 14°F/-10°C, and 100°T is 107°F/42°C.)

By a lucky coincidence, average human body temp is 90°T, another convenient number. (Compare to 37°C or 98.6°F, both awful.)

Not that it usually matters in reality, but the boiling point of water is 210°T, yet another convenient number. I'm not imposing excess rounding here to make it look good, either: 100°C really is 210.4°T!

Swapping between human- and physics-friendly versions of the unit is also, as I mentioned earlier, trivial in this system, you just add or subtract 500° from the temperature. A far cry from 273.15°! (Or the equally horrible 459.67 for converting between Fahrenheit and Rankine.)

(If you want to convert more temps, the conversion factor between °AT and K is .5253. To convert from °C to K, add 273.16; to convert from °AT to °T, subtract 500.)

Here's a quick table with some convenient numbers:

20°T (water freezes)32°F0°C273K
90°T (body temp)98°F37°C310K
210°T (water boils)212°F100°C373K

Bonus: What About Heximal?

Real Tab-heads know that base-6 is the best base for numbers to be, substantially better than base-10. This temperature scale seems pretty well-tailored to base-10, with a great 0-100 range and a round absolute zero. Can it be adapted to base-6 while maintaining its good properties?

Yes! It's not perfect, but it's slightly better in some ways, slightly worse in other ways, and overall fairly similar.

Short form: Absolute zero is now at -1000₆°T, and water freezes at 10₆°T. The rest of the system extends from that.

This means that 0₆°T is equal to about -7°C, or 19°F, slightly higher than the decimal version, and 100₆°T is equal to... 37°C or 98.4°F! That's body temperature, baby! That was a very common calibration target for older temperature scales, and is just a fun number to have at such a round value.

It does mean that the range overall is a bit narrower; negative and >100₆°T temperatures will show up more often. They'll be "very cold" and "very hot" temps, but not "hoo boy these never happen" temps, like in the decimal version. But that's okay! Realistically, readouts will have to be able to display these values anyway, so it's not a huge loss. The vast majority of outdoor temperatures you encounter will continue to be in the 0-100₆ range.

Bonus points for the fact that "room temperature" (72°F/22°C) is a nice round 40₆°T. How nice!

(You can see me working thru the logic here at https://twitter.com/tabatkins/status/1308226259374149633.)

Some Conversion Code For Nerds

If you wanna play with this system a bit, here's some JS for converting between it and C/F/K:

Decimal version:

function atFromK(degK) { return degK / 273.16 * 520; }
function kFromAT(degAT) { return degAT / 520 * 273.16; }
function tFromC(degC) { return atFromK(degC + 273.16) - 500; }
function cFromT(degT) { return kFromAT(degT + 500) - 273.16; }
function fFromT(degT) { return cFromT(degT) * 9/5 + 32; }
function tFromF(degF) { return tFromC((degF - 32) * 5/9); }

Heximal version:

function atFromK(degK) { return degK / 273.16 * 226; }
function kFromAT(degAT) { return degAT / 226 * 273.16; }
function tFromC(degC) { return atFromK(degC + 273.16) - 216; }
function cFromT(degT) { return kFromAT(degT + 216) - 273.16; }
function fFromT(degT) { return cFromT(degT) * 9/5 + 32; }
function tFromF(degF) { return tFromC((degF - 32) * 5/9); }

(You'll want to call .toString(6) on the heximal results, and/or use parseInt(X, 6) on the heximal inputs, of course. Like fFromT(parseInt("100", 6)) or tFromC(0).toString(6).)

(a limited set of Markdown is supported)

Damn, I just went through[sic] this thinking only about heximal. How glad I was getting to the bonus paragraph :D I like it, but this zero at -7°C in the middle of more preferable -15°C and 0°C is kinda clunky. It's a pity it could not be perfect, but it never is with stuff like that, is it? Maybe it would be worth trying to do this on a logarythmic scale? You know, like decibels. Maybe even the zero could be at absolute zero? Idk, good job anyway, as always.


(a limited set of Markdown is supported)

Ah, sorry, the absolute zero would be at -infinity then. Which is still a more round 'number' than -500 or -1000₆. If I'm not mistaken we have to specify the zero, the step, and the logarithm base and we have one constant (the absolute zero) less to think about, which gives us a lot of freedom. Could it work better? And would it be simple to use (like a change of 5°C always has similiar meaning in the range of outdoor temps)?


(a limited set of Markdown is supported)

Nah, logarithmic, while having some useful properties, is not human friendly for temperature. We don't feel temperature logarithmically like we do sound and light, afaict. It can't be easily measured physically that way, either; physical thermometers respond linearly to temp (at least within the range we use them).

I do wish that 0°T was a little colder, yeah, but I can't do that without pulling 100°T down further, and it's already at about the lowest I'd want it to be for climate reasons, and it's right on body temp which is great. You win some, you lose some.


(a limited set of Markdown is supported)

#4 - Slowpoke:

Yeah, I agree. But we don't experience temperature linearly as well, afaict. I think we feel the difference from our body temperature, not the temperature per se. I'll allow myself not to do any research about our receptors and say what gut tells me. We could arrange the parameters in a way, that the logarythmic scale could be close to linear in the everyday range differing drastically only further down the road. (Try setting absolute zero to 0 and human body temperature to 1 and take the logaritm of the values you get from this scale - you will see that in the range of outside temperatures the values are preety linear). It may be possible to arrange it better in reference to our key temperatures than what you covered. About physical thermometers - I think we would have to draw the scale a little bit off though ^^


(a limited set of Markdown is supported)

How about using cosmic parameters for a scale? We set 0 at absolute 0 and use the temperature of the cosmic microwave background radiation (2.72548 K) as our unit. Freezing of water will then have a convenient value of 100 and the boiling point will be 134. Body temperature is then 114.


(a limited set of Markdown is supported)