É do Java BigDecimal o mais próximo do tipo de dados correspondente a C#'s Decimal?
-
21-12-2019 - |
Pergunta
De acordo com o gráfico aqui, o equivalente tipo de dados em Java, C#'s Decimal
é BigDecimal
.
Isso é realmente assim?O que está acontecendo com o "Grande" preâmbulo?Não parece ser um "SmallDecimal" ou "LittleDecimal" (let alone "MediumSizedDecimal") em Java.
Devo dizer, porém, que o gráfico foi a mais clara coisa que eu achei sobre o assunto;os outros links aqui e aqui e aqui foram tão claro para mim como o Rio Mississipi, depois de uma tempestade torrencial.
Solução
Sim - esse é o tipo correspondente.
Desde que você está usando Java depois de C # - Não fique muito surpreso ao encontrar pequenas nuances como esta - ou esteja muito chateada quando não há maneira fácil de fazer algo que seja "fácil" para fazer C #.A primeira coisa que vem à minha mente é int & int?- em Java você acabou de usar int e inteiro.
C # teve o luxo de vir depois de Java tão lotes (o que vejo subjacente como) Decisões ruins foram corrigidas / simplificadas.Além disso, ajuda que C # foi projetado por Andres Hejlsberg (Quem é, sem dúvida, uma das melhores linguagens de programaçãoDesigners vivos) e é regularmente "atualizado" ao contrário do Java (você provavelmente testemunhou todas as coisas adicionadas a C # desde 2000 - lista completa )
Outras dicas
Isso é realmente assim?
Eles são semelhantes, mas não idênticos.Para ser mais específico:a versão do Java pode representar qualquer valor que a versão C#, mas o oposto não é verdadeiro.
O que está acontecendo com o "Grande" preâmbulo?
Java BigDecimal
pode ter arbitrariamente muita precisão e, portanto, pode ser arbitrariamente grande.Se você quiser fazer uma BigDecimal
com mil lugares de precisão, vá em frente.
Por outro lado, um C# decimal
tem um tamanho fixo;ele leva até 128 bits e dá-lhe 28 casas decimais de precisão.
Para ser mais preciso:ambos os tipos apresentam números da forma
+/- someInteger / 10 ^ someExponent
Em C#, someInteger
é um 96 bit número inteiro não assinado e someExponent
é um número inteiro entre 0 e 28.
Em Java, someInteger
é de tamanho arbitrário e someExponent
é uma assinado de 32 bits inteiro.