当前位置: 首页 > news >正文

摄氏度、华氏度、开尔文互转,HarmonyOS TempUtil 六个方法搞定

文章目录

    • 背景
      • 方法总览
      • 三种温度单位简介
      • C2F — 摄氏度转华氏度
      • C2K — 摄氏度转开尔文
      • F2C — 华氏度转摄氏度
      • F2K — 华氏度转开尔文
      • K2C — 开尔文转摄氏度
      • K2F — 开尔文转华氏度
      • 滑块实时互转演示
      • 六种转换关系速查
      • 写在最后

背景

近期发现一款很有意思的HarmonyOS 三方库, 地址 @pura/harmony-utils(V1.4.0) , 作者是"桃花镇童长老", 我这里也是直接通过该作者公布的源码进行案例编写进行,写了到目前写了一部分demo ,感觉确实很有帮助,这里呢也是开始写一个系列的演示demo 供大家参考。如有帮助可以在OpenHarmony中进行下载安装进行使用哦

案例demo导航展示

↓↓↓↓↓↓接下来言归正传 ↓↓↓↓

方法总览

三种温度单位简介

先快速了解一下三种温度单位的关系:

单位符号使用地区/场景水的冰点水的沸点
摄氏度°C中国、欧洲大部分0°C100°C
华氏度°F美国、英国32°F212°F
开尔文K科学/工程计算273.15K373.15K

换算公式:

  • °C → °F:F = C × 9/5 + 32
  • °F → °C:C = (F - 32) × 5/9
  • °C → K:K = C + 273.15
  • K → °C:C = K - 273.15

C2F — 摄氏度转华氏度

@StateinputC:string='100';TextInput({text:this.inputC,placeholder:'摄氏度值'}).width('100%').height(40).fontSize(13).type(InputType.Number).onChange(v=>{this.inputC=v;})this.Btn(`C2F(${this.inputC}) → 华氏度`,'#E74C3C',()=>{constc=parseFloat(this.inputC);constf=TempUtil.C2F(c);this.addLog(`C2F(${c}°C) →${f.toFixed(4)}°F`);})

运行示例:

C2F(100°C) → 212.0000°F

批量演示常见温度:

this.Btn('C2F 批量: -40/0/20/37/100°C','#E74C3C',()=>{[-40,0,20,37,100].forEach(c=>{this.addLog(`C2F(${c}°C) =${TempUtil.C2F(c).toFixed(2)}°F`);});})

输出:

C2F(-40°C) = -40.00°F ← 唯一一个摄氏度和华氏度数值相同的点 C2F(0°C) = 32.00°F ← 冰点 C2F(20°C) = 68.00°F ← 室温 C2F(37°C) = 98.60°F ← 人体体温 C2F(100°C) = 212.00°F ← 水的沸点

C2K — 摄氏度转开尔文

this.Btn(`C2K(${this.inputC}) → 开尔文`,'#C0392B',()=>{constc=parseFloat(this.inputC);constk=TempUtil.C2K(c);this.addLog(`C2K(${c}°C) →${k.toFixed(4)}K`);})

批量演示:

this.Btn('C2K 批量: -273.15/0/20/100°C','#C0392B',()=>{[-273.15,0,20,100].forEach(c=>{this.addLog(`C2K(${c}°C) =${TempUtil.C2K(c).toFixed(2)}K`);});})

输出:

C2K(-273.15°C) = 0.00K ← 绝对零度 C2K(0°C) = 273.15K ← 冰点 C2K(20°C) = 293.15K ← 室温 C2K(100°C) = 373.15K ← 水沸点

注意:开尔文没有负值(绝对零度 = 0K),C2K(-273.15)结果是0K

F2C — 华氏度转摄氏度

@StateinputF:string='212';TextInput({text:this.inputF,placeholder:'华氏度值'}).width('100%').height(40).fontSize(13).type(InputType.Number).onChange(v=>{this.inputF=v;})this.Btn(`F2C(${this.inputF}) → 摄氏度`,'#F39C12',()=>{constf=parseFloat(this.inputF);constc=TempUtil.F2C(f);this.addLog(`F2C(${f}°F) →${c.toFixed(4)}°C`);})

批量演示:

this.Btn('F2C 批量: 32/98.6/212°F','#F39C12',()=>{[32,98.6,212].forEach(f=>{this.addLog(`F2C(${f}°F) =${TempUtil.F2C(f).toFixed(2)}°C`);});})

输出:

F2C(32°F) = 0.00°C ← 冰点 F2C(98.6°F) = 37.00°C ← 人体体温 F2C(212°F) = 100.00°C ← 水沸点

F2K — 华氏度转开尔文

this.Btn(`F2K(${this.inputF}) → 开尔文`,'#E67E22',()=>{constf=parseFloat(this.inputF);constk=TempUtil.F2K(f);this.addLog(`F2K(${f}°F) →${k.toFixed(4)}K`);})

批量演示:

this.Btn('F2K 批量: 32/98.6/212°F','#E67E22',()=>{[32,98.6,212].forEach(f=>{this.addLog(`F2K(${f}°F) =${TempUtil.F2K(f).toFixed(2)}K`);});})

输出:

F2K(32°F) = 273.15K F2K(98.6°F) = 310.15K F2K(212°F) = 373.15K

K2C — 开尔文转摄氏度

@StateinputK:string='373.15';TextInput({text:this.inputK,placeholder:'开尔文值'}).width('100%').height(40).fontSize(13).type(InputType.Number).onChange(v=>{this.inputK=v;})this.Btn(`K2C(${this.inputK}) → 摄氏度`,'#3498DB',()=>{constk=parseFloat(this.inputK);constc=TempUtil.K2C(k);this.addLog(`K2C(${k}K) →${c.toFixed(4)}°C`);})

批量演示:

this.Btn('K2C 批量: 0/273.15/373.15K','#3498DB',()=>{[0,273.15,373.15].forEach(k=>{this.addLog(`K2C(${k}K) =${TempUtil.K2C(k).toFixed(2)}°C`);});})

输出:

K2C(0K) = -273.15°C ← 绝对零度 K2C(273.15K) = 0.00°C ← 冰点 K2C(373.15K) = 100.00°C ← 水沸点

K2F — 开尔文转华氏度

this.Btn(`K2F(${this.inputK}) → 华氏度`,'#2980B9',()=>{constk=parseFloat(this.inputK);constf=TempUtil.K2F(k);this.addLog(`K2F(${k}K) →${f.toFixed(4)}°F`);})

批量演示:

this.Btn('K2F 批量: 0/273.15/373.15K','#2980B9',()=>{[0,273.15,373.15].forEach(k=>{this.addLog(`K2F(${k}K) =${TempUtil.K2F(k).toFixed(2)}°F`);});})

输出:

K2F(0K) = -459.67°F K2F(273.15K) = 32.00°F K2F(373.15K) = 212.00°F

滑块实时互转演示

Demo 里有个很直观的滑块演示,拖动摄氏度滑块,实时显示对应的华氏度和开尔文:

@StatesliderC:number=0;Column({space:6}){Text(`当前:${this.sliderC}°C =${TempUtil.C2F(this.sliderC).toFixed(2)}°F =${TempUtil.C2K(this.sliderC).toFixed(2)}K`).fontSize(14).fontColor('#1a1a1a').width('100%').textAlign(TextAlign.Center)Slider({value:this.sliderC,min:-100,max:200,step:1}).width('100%').showTips(true).onChange(v=>{this.sliderC=Math.round(v);})Row({space:12}){Column(){Text(`${TempUtil.C2F(this.sliderC).toFixed(1)}°F`).fontSize(18).fontColor('#F39C12').fontWeight(FontWeight.Bold)Text('华氏度').fontSize(11).fontColor('#888')}.layoutWeight(1).alignItems(HorizontalAlign.Center)Column(){Text(`${TempUtil.C2K(this.sliderC).toFixed(2)}K`).fontSize(18).fontColor('#3498DB').fontWeight(FontWeight.Bold)Text('开尔文').fontSize(11).fontColor('#888')}.layoutWeight(1).alignItems(HorizontalAlign.Center)}}.padding(14).backgroundColor('#FFFFFF').borderRadius(10).width('100%')

这种实时联动展示的设计,很适合温度工具类应用的 UI。

六种转换关系速查

°C ←→ °F ←→ K
方法转换方向公式
C2F(c)°C → °Fc * 9/5 + 32
C2K(c)°C → Kc + 273.15
F2C(f)°F → °C(f - 32) * 5/9
F2K(f)°F → K(f - 32) * 5/9 + 273.15
K2C(k)K → °Ck - 273.15
K2F(k)K → °F(k - 273.15) * 9/5 + 32

六种转换,全覆盖。

写在最后

温度转换公式不复杂,但手写容易犯错,特别是系数和常数记混的时候。直接用TempUtil能避免这类低级错误,让代码也更易读。

做天气 App、健身 App、IoT 设备监控这类需求,TempUtil是个很实用的小工具。

http://www.jsqmd.com/news/939301/

相关文章:

  • 2026年怎么选稳定安全性价比高的云手机?
  • 蓝牙安全机制与配对绑定
  • 终极网页回溯工具:Wayback Machine浏览器扩展的5个核心功能完全指南
  • 深入Linux内存管理:从Redis的overcommit_memory警告,聊聊OOM Killer和你的服务器稳定性
  • Umi-OCR实战指南:5个场景解锁开源离线OCR工具的高效应用
  • JetBrains Maple Mono:终极开源编程字体融合方案详解
  • hermes日常使用问题
  • 2026年成都搬家公司TOP推荐:技术维度拆解与选择推荐 - 优质品牌商家
  • 如何运输艺术印刷品:运输艺术品的技巧
  • HarmonyOS TypeUtil 基础类型检测详解:isBoolean/isNumber/isString/isObject/isArray 完整教程
  • 华硕笔记本终极性能控制:G-Helper轻量化解决方案完全指南
  • 4G Cat.1 通信模组怎么选?有哪些关键参数?
  • 如何用Path of Building PoE2实现流放之路2角色构建的终极指南:3步打造完美角色
  • 从零打造3D打印井字棋机器人:Arduino与舵机运动控制实战
  • HR做薪酬体系,必须先搞懂岗位价值评估
  • QueryExcel:基于NPOI的Excel批量数据检索系统架构解析
  • ## 实地探访深圳源头工厂:木点点整装ENF闭口套餐真实落地情况 - 产品测评官
  • 做淘宝虚拟产品,稳定虚拟货源下载渠道怎么找?
  • HarmonyOS ArkTS 精确类型检测进阶:TypedArray 系列与容器类型完全指南
  • 代发货订单履行:完整指南
  • 如何用WeChatMsg永久保存微信聊天记录?你的数字记忆守护终极指南
  • 经典蓝牙(BR/EDR)开发实战
  • 别再浪费你的游戏数据了!用Python+PyTorch实现DQN经验回放(附完整代码)
  • 发现用明道中文编程语言打包的hanoi.exe文件是22M,有点大啊,还能通过什么技术手段更小一些吗?(先维持原样)
  • Claude Code 平替来了?DeepSeek-TUI 保姆级安装教程
  • 底轴旋转坝技术深度解析:钢坝、钢闸门、防洪闸、合页坝、底轴旋转坝、弧形闸门、拦河坝、景观坝、智能一体化闸门、气动浮体坝选择指南 - 优质品牌商家
  • 性能相当于第四代骁龙8s
  • HarmonyOS ArkTS 判断 Promise 与异步函数的正确姿势:TypeUtil 实战教程
  • 国内工业级3D打印代加工服务商实测排行 - 优质品牌商家
  • Windows宝塔面板启动卡死?别急着重装,先试试这个服务修复大法