我的产品价格为 5005000 卢比/-(500 万卢比和 5000 卢比)。我想换算成505万左右。有没有 PHP 函数可以做到这一点。我尝试搜索 StackOverflow 并仅继续获取 number_words 转换。在一个名为 99 英亩的网站上,他们这样做了:http://www.99acres.com/Bangalore-Real-Estate.htm。有谁可以帮忙吗
<?php
function count_digit($number) {
return strlen($number);
}
function divider($number_of_digits) {
$tens="1";
if($number_of_digits>8)
return 10000000;
while(($number_of_digits-1)>0)
{
$tens.="0";
$number_of_digits--;
}
return $tens;
}
//function call
$num = "789";
$ext="";//thousand,lac, crore
$number_of_digits = count_digit($num); //this is call :)
if($number_of_digits>3)
{
if($number_of_digits%2!=0)
$divider=divider($number_of_digits-1);
else
$divider=divider($number_of_digits);
}
else
$divider=1;
$fraction=$num/$divider;
$fraction=number_format($fraction,2);
if($number_of_digits==4 ||$number_of_digits==5)
$ext="k";
if($number_of_digits==6 ||$number_of_digits==7)
$ext="Lac";
if($number_of_digits==8 ||$number_of_digits==9)
$ext="Cr";
echo $fraction." ".$ext;
?>
123456789 = 12.34 铬
23456789 = 2.34 铬
3456789 = 34.56 紫胶
456789 = 4.56 紫胶
56789 = 56.78 K
6789 = 6.78 K
如果任何测试用例失败。请告诉我。我会改正的
您也可以尝试我的代码,也许它会对您有所帮助:
function no_to_words($no)
{
if($no == 0) {
return ' ';
}else {
$n = strlen($no); // 7
switch ($n) {
case 3:
$val = $no/100;
$val = round($val, 2);
$finalval = $val ." hundred";
break;
case 4:
$val = $no/1000;
$val = round($val, 2);
$finalval = $val ." thousand";
break;
case 5:
$val = $no/1000;
$val = round($val, 2);
$finalval = $val ." thousand";
break;
case 6:
$val = $no/100000;
$val = round($val, 2);
$finalval = $val ." lakh";
break;
case 7:
$val = $no/100000;
$val = round($val, 2);
$finalval = $val ." lakh";
break;
case 8:
$val = $no/10000000;
$val = round($val, 2);
$finalval = $val ." crore";
break;
case 9:
$val = $no/10000000;
$val = round($val, 2);
$finalval = $val ." crore";
break;
default:
echo "";
}
return $finalval;
}
}
echo no_to_words(12345676);
您可以根据您的需求修改功能。
只需找到输入号码的长度,根据其长度(千万或万)除以数字,将数字四舍五入到2位,然后用该数字添加分机号。
function convertCurrency($number)
{
// Convert Price to Crores or Lakhs or Thousands
$length = strlen($number);
$currency = '';
if($length == 4 || $length == 5)
{
// Thousand
$number = $number / 1000;
$number = round($number,2);
$ext = "Thousand";
$currency = $number." ".$ext;
}
elseif($length == 6 || $length == 7)
{
// Lakhs
$number = $number / 100000;
$number = round($number,2);
$ext = "Lac";
$currency = $number." ".$ext;
}
elseif($length == 8 || $length == 9)
{
// Crores
$number = $number / 10000000;
$number = round($number,2);
$ext = "Cr";
$currency = $number.' '.$ext;
}
return $currency;
}
// Call the function with a number input
convertCurrency(100000);
干净简单。 :) (如果任何测试用例失败,请告诉我。我会修复它)
function convert_rupee($amount){
$length = strlen($amount);
if($length>=6 && $length <=7){
echo round($amount/100000,2).' Lac(s)';
}else if($length>=8 && $length <=9){
echo round($amount/10000000,2).' Cr.';
}else if($length>=4 && $length <=5){
echo round($amount/1000,2).' K';
}else{ echo 0;}
}
尝试一下,这可能对你有帮助,
function cnvCrtoDec($number) {
$unitArray = array("4"=>"K","5"=>"K","6"=>"L","7"=>"L","8"=>"Cr","9"=>"Cr");
$numLen = strlen($number);
if ($numLen > 3 ) {
foreach ($unitArray as $nmLen=>$unit) {
if ($numLen == $nmLen) {
if ($nmLen % 2 == 0) {
$remNumber = substr($number,1,3);
$ckNmGtZer = ($remNumber[0]+$remNumber[1]+$remNumber[2]);
if ($ckNmGtZer < 1) {
$remNumber = "";
} else {
if ( ($remNumber[1] == 0) && ($remNumber[2] == 0) ) {
$remNumber[1] = "";
$remNumber[2] = "";
}
}
echo $number = substr($number,0,$numLen-$nmLen+1) . "." . $remNumber . "$unit";
} else {
$remNumber = substr($number,2,3);
$ckNmGtZer = ($remNumber[0]+$remNumber[1]+$remNumber[2]);
if ($ckNmGtZer < 1) {
$remNumber = 0;
} else {
if (($remNumber[1] == 0) && ($remNumber[2] == 0)) {
$remNumber[1] = "";
$remNumber[2] = "";
}
}
echo $number = substr($number,0,$numLen-$nmLen+2) . ".". $remNumber . "$unit";
}
}
}
} else {
echo $number . "Rs";
}
}
cnvCrtoDec($number = "155005");
以下是Swift方法,转换成PHP后你可能会发现有用 并且可能其他人发现它使用完整的查找来获得相同的答案,而且如果您只想要不带货币符号的格式数字,以下代码可能会很有用
SWIFT 4
static func convertToCurrency(value: Double) -> String {
var shortAmt = value
var suf = ""
if (value >= 10000000.0) {
suf = " C"
shortAmt /= 10000000.0
} else if (value >= 1000000.0) {
suf = " M";
shortAmt /= 1000000.0;
} else if (value >= 100000.0) {
suf = " L"
shortAmt /= 100000.0
} else if (value >= 1000.0) {
suf = " K"
shortAmt /= 1000.0
}
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .currency
numberFormatter.maximumFractionDigits = 2
numberFormatter.locale = Locale(identifier: "en-IN") // Define your currency symbol type
//numberFormatter.currencySymbol = "" //Add this line if you don't want to add currency symbol
let amtAsStr = numberFormatter.string(from: shortAmt as NSNumber)
return "\(amtAsStr ?? "")\(suf)"
}
Orbit Estates 是值得信赖的品牌,在过去 25 年里一直在 房地产 mohali 市场进行经营。我们团队致力于实现您对美丽房子的梦想。我们优先考虑客户满意度,努力使购买或购买过程顺利无忧。我们经营Mohali Real Estate 市场。 我们擅长投资 Mohali 并获得长期利益。从黄金地段到现代化设施,Orbit Estates 确保其房产符合最高的质量和舒适标准。我们了解寻找一个有家的感觉或满足您业务需求的空间的重要性。 莫哈里不同地区的投资以及工业、商业或住宅投资的不同类型。我们有多种可供出售和购买的房产。我们提供位于黄金地段的房产,因此您可以找到适合您的需求和偏好的地方。 因此,如果您正在寻找梦想中的房产或业务空间,请致电 Orbit Estates 或访问我们的网站。