मैं PHP में संख्या फॉर्मेटर वर्ग का उपयोग कर रहा हूं और इसे मुद्रा में और शब्दों में भी प्रारूपित करने की आवश्यकता है, समस्या यह है कि इसे स्वरूपित करने की आवश्यकता का दशमलव मान है और यह मुझे दो हजार नौ सौ तीन बिंदु शून्य चार मान देता है और यह दो हजार नौ सौ तीन और चार सेंट होना चाहिए, यदि मान दशमलव है तो यह मुझे एक शाब्दिक शब्द बिंदु देता है यहां मेरा कोड है

$f = new NumberFormatter("en", NumberFormatter::SPELLOUT);
$formated = $f->format(2903.04);

कृपया मेरी मदद करें धन्यवाद

0
Kevin Fontanilla 7 नवम्बर 2017, 03:35

2 जवाब

सबसे बढ़िया उत्तर

मुद्रा के लिए कोई परिभाषित स्पेल-आउट फ़ॉर्मेटर नहीं है, और जबकि आप शायद लिख सकते हैं one मुझे लगता है कि यह थोड़ा अधिक हो सकता है।

इसके बजाय आप क्या कर सकते हैं डॉलर को सेंट के रूप में अलग-अलग मूल्यों में विभाजित करें, उनको वर्तनी दें, और उन्हें गठबंधन करें।

हालांकि सबसे पहले और सबसे महत्वपूर्ण, आप फ्लोटिंग पॉइंट प्रतिनिधित्व के साथ मुद्राओं को नहीं स्टोर या गणना करना चाहते हैं। मैं इस बिंदु को अंतिम रूप से सहेजने जा रहा था, लेकिन फ़्लोटिंग पॉइंट त्रुटियों में आने से पहले मैं प्रारंभिक चरणों से भी नहीं निकल सका।

$v = 2903.04;
$d = (int)$v; // casting to int discards decimal portion
$c = (int)(($v - $d) * 100);

var_dump($v, $d, ($v - $d) * 100, $c);

आउटपुट:

float(2903.04)
int(2903)
float(3.9999999999964)
int(3)

moneyphp/money जैसी किसी चीज़ का उपयोग करें जो मौद्रिक मूल्यों को आधार मुद्रा इकाइयों की पूर्णांक राशि के रूप में संग्रहीत करता है। [उदाहरण: $2903.04 == 290304] यह ऊपर की तरह त्रुटियों से बचा जाता है, साथ ही गोल करने के लिए गन्दा कीचड़ से बचा जाता है। इसके अतिरिक्त, मनी लाइब्रेरी सुरक्षित गणितीय संचालन को लागू करेगी जैसे ऑपरेशन करने के लिए $ 1.00 को 3 प्राप्तकर्ताओं के बीच विभाजित किए बिना या पैसा खोए बिना विभाजित करना।

इसके बजाय, आइए कोड लिखें जैसे:

$a = 290304;            // full amount in cents
$c = $a % 100;          // cent remainder
$d = ($a - $c) / 100;   // dollars

$f = new NumberFormatter("en", NumberFormatter::SPELLOUT);

var_dump(
    $a, $d, $c,
    sprintf("%s dollars and %s cents", $f->format($d), $f->format($c))
);

आउटपुट:

int(290304)
int(2903)
int(4)
string(54) "two thousand nine hundred three dollars and four cents"
1
Sammitch 7 नवम्बर 2017, 05:03

मेरे काम कर रहे कनवर्टर की जाँच करें: https://smctgroup.com/contracts/number.php

इनपुट: 2903.04
आउटपुट : दो हजार नौ सौ तीन पेसो और चार सेंटावो
आप पेसो को डॉलर में बदल सकते हैं

आप इस फ़ंक्शन का उपयोग कर सकते हैं:

function makewords($numval)
{


$moneystr = "";
$num_arr = explode(".", $numval);
$decnum = $num_arr[1];

// handle the millions
$milval = (integer)($numval / 1000000);
if($milval > 0)
  {
  $moneystr = getwords($milval) . " Million";
  }

// handle the thousands
$workval = $numval - ($milval * 1000000); // get rid of millions
$thouval = (integer)($workval / 1000);
if($thouval > 0)
  {
  $workword = getwords($thouval);
  if ($moneystr == "")
    {
    $moneystr = $workword . " Thousand";
    }     
  else
    {
    $moneystr .= " " . $workword . " Thousand";
    }
  }

// handle all the rest of the dollars
$workval = $workval - ($thouval * 1000); // get rid of thousands
$tensval = (integer)($workval);
if ($moneystr == "")
  {
  if ($tensval > 0)
    {
    $moneystr = getwords($tensval);
    }
  else
    {
    $moneystr = "Zero";
    }
  }
else // non zero values in hundreds and up
  {
  $workword = getwords($tensval);
  $moneystr .= " " . $workword;
  }

// plural or singular 'dollar'
$workval = (integer)($numval);
if ($workval == 1)
  {
  $moneystr .= " Peso";
  }
else
  {
  $moneystr .= " Pesos";
  }


// //My cents

// if ($workint > 0) {
//     $moneystr .= " and ";
//     if ($workint < 20) {
//       $moneystr .= $ones[$workint];
//     } elseif ($workint < 100) {
//       $moneystr .= $tens[substr($workint, 0, 1)];
//       $moneystr .= " ".$ones[substr($workint, 1, 1)];
//     }
//   }



// do the pennies - use printf so that we get the
// same rounding as printf
$workstr = sprintf("&#37;3.2f",$numval); // convert to a string
$intstr = substr($workstr,strlen - 2, 2);
$workint = (integer)($intstr);


if($decnum>0) {

  $moneystr .= " and ";
  if ($workint == 0)
    {
    $moneystr .= "Zero";
    }
  else
    {
    $moneystr .= getwords($decnum);
    }
  if ($workint == 1)
    {
    $moneystr .= " Centavo";
    }
  else
    {
    $moneystr .= " Centavos";
    }
}
// done - let's get out of here!
return $moneystr;
}
0
SMCT - IT 18 मार्च 2019, 04:51