PHP 将任何千克量转换为可读的公制单位

标签 php math numbers data-conversion units-of-measurement

我正在尝试创建一个数学函数(在 PHP 中),它将接受给定数量的公斤,并将它们转换为可读的形式,或者更好的是,返回最适合该数量的单位。输入始终为千克。最好记录。

例如:

5 公斤 = (5) 公斤

0.5 千克 = (500) 克

1000 公斤 = (1) 吨

0.001 千克 = (1) 克

0.0001 千克 = (100) 毫克

我知道有一种方法可以使用 log 或 log10 函数来做到这一点,但我无法弄清楚。

如何做到这一点?

最佳答案

我认为这样的方法应该可行,但我相信有人可以提出更好的解决方案。

function outputWeight($kg)
{
  $power = floor(log($kg, 10));    
  switch($power) {
    case 5  :
    case 4  :
    case 3  : $unit = 'ton'; 
              $power = 3;
              break;
    case 2  :
    case 1  :    
    case 0  : $unit = 'kilogram'; 
              $power = 0;
              break;
    case -1 : 
    case -2 : 
    case -3 : $unit = 'gram'; 
              $power = -3;
              break;
    case -4 : 
    case -5 : 
    case -6 : $unit = 'milligram'; 
              $power = -6;
              break;
    default : return 'out of range';
  }
  return ($kg / pow(10, $power)) . ' ' . $unit;
}  

echo outputWeight(0.015) . '<br>';
echo outputWeight(0.15) . '<br>';
echo outputWeight(1.5) . '<br>';
echo outputWeight(15) . '<br>';
echo outputWeight(150) . '<br>';

这个想法是您可以轻松扩展范围。这将输出

15 gram
150 gram
1.5 kilogram
15 kilogram
150 kilogram

我没有彻底测试这段代码!

关于PHP 将任何千克量转换为可读的公制单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66195753/

相关文章:

php - 使用php上传图片出错

php - Mac OS X - 重新安装 Apache/PHP/MySQL 服务器的全新/干净副本

python - 我怎样才能将这个 Gabor 补丁扩展到边界框的大小?

c# - 为什么 Int32.MaxValue * Int32.MaxValue == 1?

c++ - 跟踪对象局部坐标空间

Haskell:无法预期类型 'Integer' 与实际类型 'Int'

sql - SELECT 与 UPDATE,使用 ABS 函数时出现意外四舍五入

javascript - 更改时更新 PHP session 变量

php - 无法理解 REGEX 中 * 和 + 量词之间的区别

c++ - 在 C++ 中生成随机数