-
-
Save faisalman/845309 to your computer and use it in GitHub Desktop.
/** | |
* JavaScript Code Snippet | |
* Convert Number to Rupiah & vice versa | |
* https://gist.github.com/845309 | |
* | |
* Copyright 2011-2012, Faisalman | |
* Licensed under The MIT License | |
* http://www.opensource.org/licenses/mit-license | |
* | |
*/ | |
function convertToRupiah(angka) | |
{ | |
var rupiah = ''; | |
var angkarev = angka.toString().split('').reverse().join(''); | |
for(var i = 0; i < angkarev.length; i++) if(i%3 == 0) rupiah += angkarev.substr(i,3)+'.'; | |
return 'Rp. '+rupiah.split('',rupiah.length-1).reverse().join(''); | |
} | |
/** | |
* Usage example: | |
* alert(convertToRupiah(10000000)); -> "Rp. 10.000.000" | |
*/ | |
function convertToAngka(rupiah) | |
{ | |
return parseInt(rupiah.replace(/,.*|[^0-9]/g, ''), 10); | |
} | |
/** | |
* Usage example: | |
* alert(convertToAngka("Rp 10.000.123")); -> 10000123 | |
*/ |
<?php | |
/** | |
* PHP Code Snippet | |
* Convert Number to Rupiah & vice versa | |
* https://gist.github.com/845309 | |
* | |
* Copyright 2011-2012, Faisalman | |
* Licensed under The MIT License | |
* http://www.opensource.org/licenses/mit-license | |
*/ | |
/** | |
* | |
* @param integer $angka number | |
* @return string | |
* | |
* Usage example: | |
* echo convert_to_rupiah(10000000); -> "Rp. 10.000.000" | |
*/ | |
function convert_to_rupiah($angka) | |
{ | |
return 'Rp. '.strrev(implode('.',str_split(strrev(strval($angka)),3))); | |
} | |
/** | |
* | |
* @param string $rupiah | |
* @return integer | |
* | |
* Usage example: | |
* echo convert_to_number("Rp. 10.000.123,00"); -> 10000123 | |
*/ | |
function convert_to_number($rupiah) | |
{ | |
return intval(preg_replace(/,.*|[^0-9]/, '', $rupiah)); | |
} | |
?> |
package | |
{ | |
/** | |
* ActionScript 3.0 Code Snippet | |
* Convert Number to Rupiah & vice versa | |
* https://gist.github.com/845309 | |
* | |
* Copyright 2011-2012, Faisalman | |
* Licensed under The MIT License | |
* http://www.opensource.org/licenses/mit-license | |
*/ | |
public class Rupiah | |
{ | |
public static function convertToRupiah(angka:Number):String | |
{ | |
var angkaRev:String = new String(); | |
var angkaRev2:String = new String(); | |
var i:Number = new Number(); | |
angkaRev = angka.toString().split('').reverse().join(''); | |
for(i = 0; i < angkaRev.length; i++) if(i%3 == 0) angkaRev2 += angkaRev.substr(i,3)+'.'; | |
return 'Rp. '+angkaRev2.split('',angkaRev2.length-1).reverse().join(''); | |
} | |
/** | |
* // Usage example: // | |
* var rp:Rupiah = new Rupiah(); | |
* trace(rp.convertToRupiah(10000000)); -> "Rp. 10.000.000" | |
*/ | |
public static function convertToAngka(rupiah:String):Number | |
{ | |
return parseInt(rupiah.replace(/,.*|[^0-9]/g,''), 10); | |
} | |
/** | |
* // Usage example: // | |
* var rp:Rupiah = new Rupiah(); | |
* trace(rp.convertToAngka("Rp 10.000.123,00")); -> 10000123 | |
*/ | |
} | |
} |
/** | |
* C#.NET Code Snippet | |
* Convert Number to Rupiah & vice versa | |
* https://gist.github.com/845309 | |
* | |
* Copyright 2012, Faisalman | |
* Licensed under The MIT License | |
* http://www.opensource.org/licenses/mit-license | |
*/ | |
using System; | |
using System.Globalization; | |
using System.Text.RegularExpressions; | |
public static class Rupiah | |
{ | |
public static string ToRupiah(this int angka) | |
{ | |
return String.Format(CultureInfo.CreateSpecificCulture("id-id"), "Rp. {0:N}", angka); | |
} | |
/** | |
* // Usage example: // | |
* int angka = 10000000; | |
* System.Console.WriteLine(angka.ToRupiah()); // -> Rp. 10.000.000 | |
*/ | |
public static int ToAngka(this string rupiah) | |
{ | |
return int.Parse(Regex.Replace(rupiah, @",.*|\D", "")); | |
} | |
/** | |
* // Usage example: // | |
* string rupiah = "Rp 10.000.123,00"; | |
* System.Console.WriteLine(rupiah.ToAngka()); // -> 10000123 | |
*/ | |
} |
Kau bisa ganti biar ikut PUEBI, @faisalman?
thanks vroh
Penulisan yang benar Rp123.456,67
ga pake spasi titik.
Buat ngilangin desimal 2 angka dibelakang ditambah 0 setelah N
return String.Format(CultureInfo.CreateSpecificCulture("id-id"), "Rp. {0:N0}", angka);
lebih simple dibanding bawaan fungsi php..thx
selama buat project selalu pakai cara ini. terima kasih banyak gan. sangat membantu sekali
Penulisan rupiah yang benar adalah Rp1.000.000
atau Rp1.000.000.00
atau Rp1.000.000,-
makasih bang
Bagaimana cara mengembalikan 10.000 menjadi 10000
@miftakhulrobi cara sederhanya bisa seperti ini:
- angka/nilainya dikonvesi kedalam string
- split jadi array dengan separator . (titik)
- gabungkan array dan ditampung kedalam variable
- konversi variable tersebut kedalam angka
mantap vroh
kl sy tambahkan symbol minus, contoh hasil nya '-.888' itu bagaimana ya kak?
@hstaprl maksut kamu -0.888 gitu? kok punyamu tanpa 0? why?
mantap boby
Terima kasih fungsinya, Faisalman! Saya titip editan di sini ya:
function convertToRupiah(angka) {
var rupiah = '';
var angkarev = angka.toString().split('').reverse().join('');
for (var i = 0; i < angkarev.length; i++) if (i % 3 == 0) rupiah += angkarev.substr(i, 3) + '.';
return 'Rp' + rupiah.split('', rupiah.length - 1).reverse().join('');
}
tambahan nih untuk java
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
public class RupiahUtils {
public static void main(String[] args) {
double harga = 250000000;
System.out.printf("Harga Rupiah: %s %n", convertToRupiah(harga));
System.out.printf("%.2f", harga);
}
public static String convertToRupiah(Double angka) {
DecimalFormat kursIndonesia = (DecimalFormat) DecimalFormat.getCurrencyInstance();
DecimalFormatSymbols formatRp = new DecimalFormatSymbols();
formatRp.setCurrencySymbol("Rp. ");
formatRp.setMonetaryDecimalSeparator(',');
formatRp.setGroupingSeparator('.');
kursIndonesia.setDecimalFormatSymbols(formatRp);
return kursIndonesia.format(angka);
}
public static String convertToRupiahWithoutTrailingZeros(Double angka) {
final String regex = ",00$";
final String subst = ",-";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(convertToRupiah(angka));
// The substituted value will be contained in the result variable
final String result = matcher.replaceAll(subst);
return result;
}
}
js substr
deprecated, diganti dengan ini
function convertToRupiah(angka) {
let number_string = new String(angka).replace(/[^,\d]/g, '').toString(),
split = number_string.split(','),
sisa = split[0].length % 3,
rupiah = split[0].substring(0, sisa),
ribuan = split[0].substring(sisa).match(/\d{3}/gi);
// tambahkan koma jika yang di input sudah menjadi angka ribuan
if (ribuan) {
separator = sisa ? ',' : '';
rupiah += separator + ribuan.join(',');
}
rupiah = split[1] != undefined ? rupiah + ',' + split[1] : rupiah;
return (rupiah ? 'Rp. ' + rupiah : '') + ',-';
}
kenapa format js kalau melebihi satu juta menjadi NaN?