更新进制转换笔记和添加PHP单位转换函数
This commit is contained in:
71
PHP/单位转换.php
Normal file
71
PHP/单位转换.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
/**
|
||||
* 单位转换工具函数
|
||||
* 根据用户输入的数值和单位进行转换
|
||||
* @param float $value 要转换的数值
|
||||
* @param string $fromUnit 原始单位 (cm, m, km)
|
||||
* @param string $toUnit 目标单位 (cm, m, km)
|
||||
* @return float 转换后的数值
|
||||
* @throws Exception 当提供的单位无效时抛出异常
|
||||
*/
|
||||
function unitConversion($value, $fromUnit, $toUnit) {
|
||||
// 统一转换为小写以忽略大小写差异
|
||||
$fromUnit = strtolower($fromUnit);
|
||||
$toUnit = strtolower($toUnit);
|
||||
|
||||
// 检查单位是否有效
|
||||
$validUnits = ['cm', 'm', 'km'];
|
||||
if (!in_array($fromUnit, $validUnits) || !in_array($toUnit, $validUnits)) {
|
||||
throw new Exception("无效的单位!请使用 cm、m 或 km");
|
||||
}
|
||||
|
||||
// 如果单位相同,直接返回原值
|
||||
if ($fromUnit === $toUnit) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
// 定义转换率(转换到米)
|
||||
$toMeters = [
|
||||
'cm' => 0.01, // 厘米到米
|
||||
'm' => 1, // 米到米
|
||||
'km' => 1000 // 千米到米
|
||||
];
|
||||
|
||||
// 定义从米转换的率
|
||||
$fromMeters = [
|
||||
'cm' => 100, // 米到厘米
|
||||
'm' => 1, // 米到米
|
||||
'km' => 0.001 // 米到千米
|
||||
];
|
||||
|
||||
// 转换逻辑:先转换为米,再转换为目标单位
|
||||
$valueInMeters = $value * $toMeters[$fromUnit];
|
||||
$convertedValue = $valueInMeters * $fromMeters[$toUnit];
|
||||
|
||||
return $convertedValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化显示转换结果
|
||||
* @param float $value 原始数值
|
||||
* @param string $fromUnit 原始单位
|
||||
* @param float $result 转换后数值
|
||||
* @param string $toUnit 目标单位
|
||||
* @return string 格式化的结果字符串
|
||||
*/
|
||||
function formatResult($value, $fromUnit, $result, $toUnit) {
|
||||
return "{$value} {$fromUnit} = {$result} {$toUnit}";
|
||||
}
|
||||
|
||||
// 示例用法(可选)
|
||||
/*
|
||||
try {
|
||||
// 测试不同转换场景
|
||||
echo formatResult(100, 'cm', unitConversion(100, 'cm', 'm'), 'm') . "\n";
|
||||
echo formatResult(1, 'm', unitConversion(1, 'm', 'cm'), 'cm') . "\n";
|
||||
echo formatResult(5, 'km', unitConversion(5, 'km', 'm'), 'm') . "\n";
|
||||
echo formatResult(1000, 'm', unitConversion(1000, 'm', 'km'), 'km') . "\n";
|
||||
} catch (Exception $e) {
|
||||
echo "错误: " . $e->getMessage() . "\n";
|
||||
}
|
||||
*/
|
||||
Reference in New Issue
Block a user