Usuário com melhor resposta
Numeros decimais

Pergunta
-
Boa tarde, estou tendo um problema para receber números decimais no meu método create. O sistema esta configurado com globalization pt-BR, e os valores decimais na view são tratados todos todos com virgula. O problema agora é que um dos campos recebe o resultado de um js, e para fazer o calculo com js preciso trocar as virgulas pelos pontos, e o valor do resultado dessa operação matemática na view fica com ponto, na hora que vou passar pro controller o valor, é exibido a mensagem que o valor não é valido. Queria saber se tem alguma forma de eu passar esse valor para o controller mesmo com ponto? fazer o sistema reconhecer como valor decimal tanto números com ponto quanto com virgula.. (OBS: não posso converter os pontos pela virgula logo quando termino operação matemática no js, porque esse campo é amarrado com vários outros para realizar diversas outras operações matemáticas)
Respostas
-
Então, mas aí dentro do textbox você não poderia alterar o ponto e colocar uma vírgula?
Porque depois para manipular no JS tem como trocar novamente.
-
Bom dia,
esse sistema eu peguei para fazer algumas modificações, e a parte do JS estava bem confusa. O calculo era feito e o resultado mandado para o textbox assim:
$('#icms_total_bc_icms').val(parseFloat($('#icms_total_icms').val().replace(",", ".")) / (((parseFloat($('#icms_percentual_icms').val().replace(",", ".")) / 100) * parseFloat($('#icms_percentual_bc_icms').val().replace(",", "."))) / 100))
Por esse motivo eu não conseguia usar o replace direto nele. A solução foi:
icms_total_bc_icms_formatado = $('#icms_total_bc_icms').val().replace(".", ","); $('#icms_total_bc_icms').val(icms_total_bc_icms_formatado);
Criei uma variável para receber o valor já calculado e usar replace, e depois mandar esse valor pro textbox.
Deu certo.. :D
Todas as Respostas
-
-
Boa tarde.
Assim como a Ana, também não entendi exatamente a questão, porém para padronização, tu podes dar um override no InitializeCulture e deixar como tu desejas (ponto final no lugar da vírgula como separador):
protected override void InitializeCulture() { var culture = CultureInfo.CreateSpecificCulture("pt-BR"); culture.NumberFormat.NumberDecimalSeparator = "."; Thread.CurrentThread.CurrentCulture = culture; Thread.CurrentThread.CurrentUICulture = culture; base.InitializeCulture(); }
Att., Rafael Simor
-
-
Então, mas aí dentro do textbox você não poderia alterar o ponto e colocar uma vírgula?
Porque depois para manipular no JS tem como trocar novamente.
-
Bom dia,
esse sistema eu peguei para fazer algumas modificações, e a parte do JS estava bem confusa. O calculo era feito e o resultado mandado para o textbox assim:
$('#icms_total_bc_icms').val(parseFloat($('#icms_total_icms').val().replace(",", ".")) / (((parseFloat($('#icms_percentual_icms').val().replace(",", ".")) / 100) * parseFloat($('#icms_percentual_bc_icms').val().replace(",", "."))) / 100))
Por esse motivo eu não conseguia usar o replace direto nele. A solução foi:
icms_total_bc_icms_formatado = $('#icms_total_bc_icms').val().replace(".", ","); $('#icms_total_bc_icms').val(icms_total_bc_icms_formatado);
Criei uma variável para receber o valor já calculado e usar replace, e depois mandar esse valor pro textbox.
Deu certo.. :D