繁体   English   中英

Java 中逗号后的数字

[英]numbers after comma in Java

如何在 Java 中的逗号后得到n数字?

...
double numb = 123.45;
void lastNumber(int n){
   // here
}
...

(在这个例子中 n = 2,所以逗号后面有两个数字)

  • 乘以 10^n
  • 地板或强制转换为 int
  • 除以 10^n

或利用

  • 大十进制

有点丑:

public long getFraction(double num, int digits) {
    int multiplier = POWERS_OF_TEN[digits];
    long result = ((long) (num * multiplier)) - (((long) num) * multiplier);
    return result;
}

其中POWERS_OF_TEN是预先计算的 10 次方数组(0=1、1=10、2=100、3=1000 等)

double numb = 123.45 实际上不是 123.45,但在二进制表示中非常接近它。

如果您需要正好 123.45,则需要BigDecimal class,例如

BigInteger numb = new BigInteger("123.45"); // or
BigInteger numb = BigInteger.valueOf(12345, 2);

一个简短的工作程序产生 45:

import java.math.BigDecimal;

public class Main {

    public static void main(String[] args) {
        BigDecimal numb = BigDecimal.valueOf(12345,2);
        BigDecimal remainder = numb.remainder(BigDecimal.ONE);
        System.out.println(remainder.unscaledValue());
    }
}

使用 BigIntegers 并不好玩,但在处理财务时非常好。 它们并不快,但如果你只有一个数字,那应该不是问题:)

这个比较简单。 与其只给出答案,不如考虑一下。 忘记 Java - 从数学的角度想想你想做什么。 从问题中,您需要小数点后的数字 - 数字的小数部分 - 0.45 你怎么能从 123.45 得到 0.45?

想想你需要减去什么,你如何得到这个数字? 有一个数学 function,“地板”,它给你一个没有小数部分的数字。 (至少对于正数。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM