How do I convert string to Indian Money format?

If fare is any of int, long, decimal, float or double then I get the expected output of:

₹ 12,34,567.00.

I suspect your fare is actually a string; strings are not formatted by string.Format: they are already a string: there is no value to format. So: parse it first (using whatever is appropriate, maybe an invariant decimal parse), then format the parsed value; for example:

// here we assume that `fare` is actually a `string`
string fare = "1234567";
decimal parsed = decimal.Parse(fare, CultureInfo.InvariantCulture);
CultureInfo hindi = new CultureInfo("hi-IN");
string text = string.Format(hindi, "{0:c}", parsed);

Edit re comments; to get just the formatted value without the currency symbol or decimal portion:

string text = string.Format(hindi, "{0:#,#}", value);

Leave a Comment