Durante o processo de desenvolvimento, geralmente encontramos formatos que precisam ser ajustados, como reter os dois lugares decimais após o ponto decimal, etc. O método também é bastante comum, observe o seguinte.
O primeiro é usar matemática.
var original = 28.453
1) // Round "Original" a dois decimais
var resultado = math.Round (original*100)/100; // retorna 28.45
2) // Round "original" a 1 decimal
var resultado = Math.Round (original*10)/10; // retorna 28.5
O segundo tipo, JS1.5 ou acima, pode usar tofixado (x) para especificar o número para interceptar a posição X após o ponto decimal.
3) // Round "original" a dois decimais
var resultado = original.tofixado (2); // retorna 28.45
4) // Round "original" a 1 decimal
var resultado = original.tofixado (1); // retorna 28.5
Os dois métodos acima são os mais comuns, mas eles não podem atender a certos requisitos especiais. Por exemplo, mantendo os dois lugares decimais após o ponto decimal. Se você tiver menos de dois dígitos, compensará Zeros. Neste momento, há um terceiro método.
O terceiro tipo é a função de conversão. Este código vem de um fórum estrangeiro.
A cópia do código é a seguinte:
função redondnumber (número, decimais) {
var newstring; // o novo número arredondado
decimais = número (decimais);
if (decimais <1) {
NewsTring = (Math.Round (número)). ToString ();
} outro {
var numString = number.toString ();
if (numString.LastIndexof (".") == -1) {// se não houver ponto decimal
NumString += "."; // Dê um no final
}
var corteff = numString.LastIndexOf (".") + decimais; // o ponto em que truncar o número
var d1 = número (NumString.substring (corteff, corte+1)); // o valor do último lugar decimal com o qual acabaremos
var d2 = número (numString.substring (corteff+1, corteff+2)); // o próximo decimal, após o último que queremos
if (d2> = 5) {// precisamos arredondar? Caso contrário, a string será apenas truncada
if (d1 == 9 && corteff> 0) {// Se o último dígito for 9, encontre um novo ponto de corte
while (corteff> 0 && (d1 == 9 || isnan (d1))) {
if (d1! = ".") {
corte -= 1;
d1 = número (numString.substring (corte, corte+1));
} outro {
corte -= 1;
}
}
}
d1 += 1;
}
if (d1 == 10) {
NumString = numString.substring (0, numString.LastIndexof ("."));
var arredondado = número (numstring) + 1;
newstring = RoundedNum.toString () + '.';
} outro {
newstring = numString.substring (0, corte) + d1.toString ();
}
}
if (newsTring.LastIndexof (".") == -1) {// Faça isso novamente, para a nova string
newstring += ".";
}
var decs = (NewsTring.substring (NewsTring.LastIndexof (".")+1)). Comprimento;
for (var i = 0; i <decimais-decs; i ++) newstring+= "0";
// var newNumber = número (newstring); //, faça um número se quiser
Document.RoundForm.RoundField.Value = Newstring; // emitir o resultado para o campo de formulário (alteração para seus fins)
}
5) // Round "original" a dois decimais
var resultado = original.tofixado (2); // retorna 28.45
6) // Round "original" a 1 decimal
var resultado = original.tofixado (1); // retorna 28.5
var original = 28.4
var resultado = original.tofixado (2); // retorna 28.40