测个网络延迟,ping 出来 30ms,想换算成秒是多少;写定时器代码参数填的又是毫秒,单位容易绕晕。ms和s的换算单位其实就一条主线:相邻单位之间都是千进制。

基本换算

  • 1 秒 = 1000 毫秒,1ms = 0.001s
  • 1 毫秒 = 1000 微秒,1μs = 0.001ms
  • 1 微秒 = 1000 纳秒,1ns = 0.001μs
  • 合起来:1s = 1000ms = 1000000μs = 1000000000ns

ms 是毫秒的符号,s 是秒,μs 读微秒,ns 读纳秒。手算就是移动小数点:毫秒换秒小数点左移三位,30ms 就是 0.03 秒,2000ms 就是 2 秒。

大小写别写错

毫秒是小写 m 加 s,写成 Ms 就变成兆秒,差十亿倍;微秒的 μ 打不出来时写 us 也是通行做法。类似地 KB 和 kb 一个字节一个比特,技术文档里单位符号的大小写从来都是严格区分的。

常见场景对照

打个对照就直观了。一次眨眼大约 100 到 400 毫秒;每秒 60 帧的画面,每帧只有约 16.7ms 的渲染时间;家里 ping 网关一般 1 到 3ms,跨省服务器 20 到 50ms,超过 100ms 打游戏就能感觉到延迟。机械硬盘响应按毫秒算,内存和 CPU 缓存就到了纳秒级。相机快门、秒表精度这些地方也会见到 ms,含义一样。

代码里参数是毫秒的坑

JavaScript 的 setTimeout、setInterval 参数都是毫秒,setTimeout(fn, 5000) 才是 5 秒,只写 5 等于 5 毫秒,几乎立即执行。Python 的 time.sleep 参数反而是秒,睡半秒要写 time.sleep(0.5)。Java 里 Thread.sleep 也是毫秒,C 语言常用 usleep 按微秒算,混着用最容易错,各语言、各库不统一,用之前先看文档单位。

Excel 里换算也常见:A1 存毫秒数,公式 A1/1000 就是秒;想显示成 00:00:05 这种时间格式,可以把数值除以 86400000 再设时间格式,86400000 是一天的毫秒总数。

一句话:千进制记住 1s 等于 1000ms,微秒纳秒照着千倍往上加;拿不准参数单位时先查文档,比背表管用。