Temperature conversion: Difference between revisions
Content added Content deleted
m (Added reference to "strfmt".) |
(→{{header|Excel}}: Added an Excel LAMBDA variant) |
||
Line 1,308: | Line 1,308: | ||
2 21 -252.15 -421.87 37.8 |
2 21 -252.15 -421.87 37.8 |
||
</pre> |
</pre> |
||
===LAMBDA=== |
|||
Excel provides a general purpose CONVERT function, which includes coverage for common temperature scales. |
|||
We can define a reusable specialisation of it by binding the name FROMKELVIN to the following lambda expression in the Name Manager of the Excel WorkBook: |
|||
(See [https://www.microsoft.com/en-us/research/blog/lambda-the-ultimatae-excel-worksheet-function/ LAMBDA: The ultimate Excel worksheet function]) |
|||
{{Works with|Office 365 betas 2021}} |
|||
<lang lisp>=LAMBDA(toUnit, |
|||
LAMBDA(n, |
|||
LET( |
|||
REM, "Valid units :: C, F, R, K", |
|||
CONVERT( |
|||
n, "K", |
|||
IF("R" = toUnit, |
|||
"Rank", |
|||
toUnit |
|||
) |
|||
) |
|||
) |
|||
) |
|||
)</lang> |
|||
The example below generates the spaced list of test values on the left from the expression ENUMFROMTHENTO(240)(250)(390), |
|||
applying the following custom function: |
|||
<lang lisp>ENUMFROMTHENTO |
|||
=LAMBDA(a, |
|||
LAMBDA(b, |
|||
LAMBDA(z, |
|||
LET( |
|||
d, b - a, |
|||
SEQUENCE( |
|||
1 + FLOOR.MATH((z - a)/d), |
|||
1, a, d |
|||
) |
|||
) |
|||
) |
|||
) |
|||
)</lang> |
|||
The four columns on the right of the output read their target format from the label cell at the top of each column. |
|||
(The last column displays an identity conversion, added as a check). |
|||
{{Out}} |
|||
{| class="wikitable" |
|||
|- |
|||
|||style="text-align:right; font-family:serif; font-style:italic; font-size:120%;"|fx |
|||
! colspan="5" style="text-align:left; vertical-align: bottom; font-family:Arial, Helvetica, sans-serif !important;"|=FROMKELVIN(B$1)($A2) |
|||
|- style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff;" |
|||
| |
|||
| A |
|||
| B |
|||
| C |
|||
| D |
|||
| E |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 1 |
|||
| style="text-align:left; font-weight:bold" | Kelvin |
|||
| style="text-align:left; font-style:italic" | C |
|||
| style="text-align:left; font-style:italic" | F |
|||
| style="text-align:left; font-style:italic" | R |
|||
| style="text-align:left; font-style:italic" | K |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 2 |
|||
| style="text-align:center" | 240 |
|||
| style="text-align:right; background-color:#cbcefb" | -33.15 |
|||
| style="text-align:right" | -27.67 |
|||
| style="text-align:left" | 432 |
|||
| style="text-align:left" | 240 |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 3 |
|||
| style="text-align:center" | 250 |
|||
| style="text-align:right" | -23.15 |
|||
| style="text-align:right" | -9.67 |
|||
| style="text-align:left" | 450 |
|||
| style="text-align:left" | 250 |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 4 |
|||
| style="text-align:center" | 260 |
|||
| style="text-align:right" | -13.15 |
|||
| style="text-align:right" | 8.33 |
|||
| style="text-align:left" | 468 |
|||
| style="text-align:left" | 260 |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 5 |
|||
| style="text-align:center" | 270 |
|||
| style="text-align:right" | -3.15 |
|||
| style="text-align:right" | 26.33 |
|||
| style="text-align:left" | 486 |
|||
| style="text-align:left" | 270 |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 6 |
|||
| style="text-align:center" | 280 |
|||
| style="text-align:right" | 6.85 |
|||
| style="text-align:right" | 44.33 |
|||
| style="text-align:left" | 504 |
|||
| style="text-align:left" | 280 |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 7 |
|||
| style="text-align:center" | 290 |
|||
| style="text-align:right" | 16.85 |
|||
| style="text-align:right" | 62.33 |
|||
| style="text-align:left" | 522 |
|||
| style="text-align:left" | 290 |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 8 |
|||
| style="text-align:center" | 300 |
|||
| style="text-align:right" | 26.85 |
|||
| style="text-align:right" | 80.33 |
|||
| style="text-align:left" | 540 |
|||
| style="text-align:left" | 300 |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 9 |
|||
| style="text-align:center" | 310 |
|||
| style="text-align:right" | 36.85 |
|||
| style="text-align:right" | 98.33 |
|||
| style="text-align:left" | 558 |
|||
| style="text-align:left" | 310 |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 10 |
|||
| style="text-align:center" | 320 |
|||
| style="text-align:right" | 46.85 |
|||
| style="text-align:right" | 116.33 |
|||
| style="text-align:left" | 576 |
|||
| style="text-align:left" | 320 |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 11 |
|||
| style="text-align:center" | 330 |
|||
| style="text-align:right" | 56.85 |
|||
| style="text-align:right" | 134.33 |
|||
| style="text-align:left" | 594 |
|||
| style="text-align:left" | 330 |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 12 |
|||
| style="text-align:center" | 340 |
|||
| style="text-align:right" | 66.85 |
|||
| style="text-align:right" | 152.33 |
|||
| style="text-align:left" | 612 |
|||
| style="text-align:left" | 340 |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 13 |
|||
| style="text-align:center" | 350 |
|||
| style="text-align:right" | 76.85 |
|||
| style="text-align:right" | 170.33 |
|||
| style="text-align:left" | 630 |
|||
| style="text-align:left" | 350 |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 14 |
|||
| style="text-align:center" | 360 |
|||
| style="text-align:right" | 86.85 |
|||
| style="text-align:right" | 188.33 |
|||
| style="text-align:left" | 648 |
|||
| style="text-align:left" | 360 |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 15 |
|||
| style="text-align:center" | 370 |
|||
| style="text-align:right" | 96.85 |
|||
| style="text-align:right" | 206.33 |
|||
| style="text-align:left" | 666 |
|||
| style="text-align:left" | 370 |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 16 |
|||
| style="text-align:center" | 380 |
|||
| style="text-align:right" | 106.85 |
|||
| style="text-align:right" | 224.33 |
|||
| style="text-align:left" | 684 |
|||
| style="text-align:left" | 380 |
|||
|- |
|||
| style="text-align:center; font-family:Arial, Helvetica, sans-serif !important; background-color:#000000; color:#ffffff" | 17 |
|||
| style="text-align:center" | 390 |
|||
| style="text-align:right" | 116.85 |
|||
| style="text-align:right" | 242.33 |
|||
| style="text-align:left" | 702 |
|||
| style="text-align:left" | 390 |
|||
|} |
|||
=={{header|Ezhil}}== |
=={{header|Ezhil}}== |