an alternative approach would be as follows...
indian separator system:
=INDEX(IF(IFERROR(N(ABS(A1:A*1)))>0, REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(
REPT(0, 50)&"×"&TEXT(A1:A, "0"), REPT("(..)", 24)&"(...)$",
JOIN(",", "$"&SEQUENCE(25))), "(.*×,?)", ), "-,", "-")&
IFNA(REGEXEXTRACT(A1:A&"", "(\.\d{1})")), A1:A&""))

indian short currency:
=INDEX(IF((IFERROR(N(ABS(A1:A*1)))>0)+(IF(ISBLANK(A1:A),,IFERROR(A1:A*1, 1)=0)),
REGEXREPLACE(TEXT(TRUNC(IFNA(A1:A*(10^-(
VLOOKUP(LEN(TEXT(INT(ABS(A1:A*1)), "0")),
SEQUENCE(8, 1, 6, 2), 1)-1)), A1:A), 1), "0.#"), "(\.)$", )&" "&
HLOOKUP(LEN(TEXT(INT(ABS(A1:A*1)), "0")), {0, SEQUENCE(1, 8, 4, 2);
SPLIT("Rp♦Rp♦L♦Cr♦Arab♦Kharab♦Nil♦Padma♦Shankh", "♦")} , 2), ""&A1:A))

both indian systems combined:
=INDEX(IF((IFERROR(N(ABS(A1:A*1)))>0)+(IF(ISBLANK(A1:A),,IFERROR(A1:A*1, 1)=0)),
REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(
REPT(0, 50)&"×"®EXREPLACE(TEXT(TRUNC(IFNA(A1:A*(10^-(
VLOOKUP(LEN(TEXT(INT(ABS(A1:A*1)), "0")),
SEQUENCE(8, 1, 6, 2), 1)-1)), A1:A), 1), "0"), "(\.)$", ), REPT("(..)", 24)&"(...)$",
JOIN(",", "$"&SEQUENCE(25))), "(.*×,?)", ), "-,", "-")&
IFNA(REGEXEXTRACT(A1:A&"", "(\.\d{1})"))&" "&
HLOOKUP(LEN(TEXT(INT(ABS(A1:A*1)), "0")), {0, SEQUENCE(1, 8, 4, 2);
SPLIT("Rp♦Rp♦L♦Cr♦Arab♦Kharab♦Nil♦Padma♦Shankh", "♦")} , 2), A1:A&""))

- works with numeric numbers
- works with plain text numbers
- works with text
- works with empty cells
- works with negative values
- works with zeros
- works with scientific notations
- works with decimals
- works up to Shankh
- works up to 10^±50