如何在 php 中将千万卢比的金额转换为十进制值?

问题描述 投票:0回答:7

我的产品价格为 5005000 卢比/-(500 万卢比和 5000 卢比)。我想换算成505万左右。有没有 PHP 函数可以做到这一点。我尝试搜索 StackOverflow 并仅继续获取 number_words 转换。在一个名为 99 英亩的网站上,他们这样做了:http://www.99acres.com/Bangalore-Real-Estate.htm。有谁可以帮忙吗

php number-formatting
7个回答
10
投票
    <?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;
?>
  1. 计算位数
  2. 取 (number_of_digit-1) 位十位值
  3. 分吧。
  4. 从位数中找出值的外延。
  5. 输出将是

123456789 = 12.34 铬

23456789 = 2.34 铬

3456789 = 34.56 紫胶

456789 = 4.56 紫胶

56789 = 56.78 K

6789 = 6.78 K

如果任何测试用例失败。请告诉我。我会改正的


3
投票

您也可以尝试我的代码,也许它会对您有所帮助:

      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
投票

只需找到输入号码的长度,根据其长度(千万或万)除以数字,将数字四舍五入到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);

干净简单。 :) (如果任何测试用例失败,请告诉我。我会修复它)


1
投票
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;}
}

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");

0
投票

以下是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)"
}

-1
投票

Orbit Estates 是值得信赖的品牌,在过去 25 年里一直在 房地产 mohali 市场进行经营。我们团队致力于实现您对美丽房子的梦想。我们优先考虑客户满意度,努力使购买或购买过程顺利无忧。我们经营Mohali Real Estate 市场。 我们擅长投资 Mohali 并获得长期利益。从黄金地段到现代化设施,Orbit Estates 确保其房产符合最高的质量和舒适标准。我们了解寻找一个有家的感觉或满足您业务需求的空间的重要性。 莫哈里不同地区的投资以及工业、商业或住宅投资的不同类型。我们有多种可供出售和购买的房产。我们提供位于黄金地段的房产,因此您可以找到适合您的需求和偏好的地方。 因此,如果您正在寻找梦想中的房产或业务空间,请致电 Orbit Estates 或访问我们的网站。

© www.soinside.com 2019 - 2024. All rights reserved.