【问题标题】:How can i convert Integer value to decimal value?如何将整数值转换为十进制值?
【发布时间】:2010-09-14 09:43:53
【问题描述】:

我有一个整数值:

Integer value = 56472201;

值可能是正数或负数。

当我将该值除以 1000000 时,我希望这个结果采用 56.472201 的形式,但它只给了我商。我怎样才能同时获得商和余数?

【问题讨论】:

  • 你用什么语言工作?
  • 结果有什么用?您是只想显示它,还是要进行其他计算(以及精度如何)?

标签: java integer-division


【解决方案1】:

将其转换为浮动然后执行:

int i = 56472201;

float j = ((float) i)/1000000.0

编辑:由于精度(在您的情况下需要),请使用双精度。正如 Konrad Rudolph 所指出的,不需要显式转换:

double j = i / 1000000.0;

【讨论】:

  • 严格来说,当你除以float 时(或者在你的情况下,几乎所有语言都使用double),这种转换是多余的。
  • 好点,我只是一个不安全/偏执的程序员(害怕 strtok!)
  • 谢谢你们 它适用于 @Konrad Rudolph @lalli 和 @Guffa 感谢您的解决方案
【解决方案2】:

如果您将一个 int 除以一个 double,您将得到一个 double 结果,如本单元测试所示。

@Test
public void testIntToDouble() throws Exception {
    final int x = 56472201;
    Assert.assertEquals(56.472201, x / 1e6d);
}

1e6d1 * 10^6 表示为双精度

【讨论】:

    【解决方案3】:

    您必须先将值转换为浮点类型,否则您将进行整数除法。

    C# 中的示例:

    int value = 56472201;
    double decimalValue = (double)value / 1000000.0;
    

    (在此代码中实际上不需要强制转换,因为除以浮点数将强制转换匹配的值,但在代码中写出强制转换更清楚,因为这就是实际发生的情况。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-16
      • 1970-01-01
      • 2011-10-19
      • 2020-11-15
      • 2020-01-04
      • 1970-01-01
      • 2023-03-30
      相关资源
      最近更新 更多