【问题标题】:Convert decimal part of a double to integer? in JAVA将double的小数部分转换为整数?在 JAVA 中
【发布时间】:2015-04-28 18:48:02
【问题描述】:

我希望我的整数如下:

双数= 9.7361;

我希望我的整数有这个:7361。

另一个例子:

双数2= 0.43;

我希望我的整数有这个:43。

在 Java 中。

【问题讨论】:

  • Math.PI 想要什么结果?
  • @BilltheLizard 它返回 3.1415...但只返回不到 16 位...
  • 你想达到什么目的?
  • 你是说你想要 4 位小数作为 int 吗?如果是这样,你需要什么样的四舍五入?
  • 9.7361 就是打印值的方式。这个值真的是9.73610000000000042064129956997931003570556640625

标签: java casting int double decimal


【解决方案1】:

你的问题有一个答案只要你限制了你可以去双精度的小数部分多远。对于这个稍作修改的问题,请考虑以下函数:

public static int fracPartAsInt(double d, int digits){
    return (int)((d - ((int)d)) * Math.pow(10, digits));
}

首先我们分离出双精度的小数部分:

(d - ((int)d)

然后乘以10^digits 得到digits 的数字

(d - ((int)d)) * Math.pow(10, digits)

最后,我们通过截断为 int 来丢弃其余部分。

【讨论】:

    【解决方案2】:

    你的问题很模糊,至少解释一下你想通过这样做来实现什么如果它总是保留三位小数,你可以这样做。

    double d=9.7681;
    int a =d%1000;
    

    【讨论】:

      【解决方案3】:

      这个想法是将整数部分和小数部分分开,并将它们分别转换为字符串。以下是详细步骤。

      1) 从浮点数中提取整数部分。

      2) 首先将整数部分转换为字符串。

      3) 从n中提取小数部分,精确整数部分。

      4) 如果 d 不为零,则执行以下操作。

      ….a) 将小数部分乘以 pow(10, d) 将其转换为整数

      ….b) 将整数值转换为字符串并附加到结果中。

      【讨论】:

        猜你喜欢
        • 2011-09-22
        • 2012-02-24
        • 2021-08-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-29
        • 1970-01-01
        • 2013-03-13
        • 1970-01-01
        相关资源
        最近更新 更多