public string Extenso() { if (grupoFilho == null) { return(digito.Extenso()); } else if (ValorSomenteDoGrupo() == 0) { return(grupoFilho.Extenso()); } else { double valorGrupo = digito.ValorTotal(); string singularPlural = valorGrupo < 2 ? "singular" : "plural"; string nomeGrupo = ResourceManagerHelper .Instance .ResourceManager .GetString(string.Format("Extenso1e{0}{1}", (posicao - 1) * 3, singularPlural)); double valorGrupoFilho = grupoFilho.ValorTotal(); if (valorGrupoFilho == 0) { return(string.Format("{0} {1}", digito.Extenso(), nomeGrupo)); } else { GrupoDe3Digitos proximoGrupoComValor = grupoFilho.PrimeiroGrupoComValor(); string separador = string.Empty; if (proximoGrupoComValor.Posicao == 1) { if (Posicao == 2 && proximoGrupoComValor.numero >= 100 && proximoGrupoComValor.numero >= 10) { separador = string.Empty; } else { separador = " e"; } } else { separador = ","; } return(string.Format("{0} {1}{2} {3}", digito.Extenso(), nomeGrupo, separador, grupoFilho.Extenso())); } } }
/// <summary> /// Transforma um número em sua representação por extenso, em português. /// </summary> /// <param name="numeroOrigem">número a ser transformado</param> /// <returns></returns> public virtual string Extenso() { GrupoDe3Digitos grupo = GetGrupoPrincipal(numeroOrigem); return(grupo.Extenso()); }