【问题标题】:Return or returning the decimal of the instance variable返回或返回实例变量的小数
【发布时间】:2021-01-07 23:10:37
【问题描述】:

从String str(实例变量)的输入参数索引位置开始的部分字符串 如果输入参数索引位置大于等于字符串长度,则返回空字符串

【问题讨论】:

  • “我不知道我做错了什么,请帮助我。”那是因为你什么都没做。你在哪里打印你的结果?你的主要是空的。
  • 请正确格式化您问题中的代码。
  • 所以我使用了 bluej,我制作了一个对象并填写了测试的参数,然后我右击该对象并单击双 drawDecimal()
  • "... 将返回 0.11000000000000032 而不是 0.11 ..." - 是什么让您认为这种行为是错误的?没有完全等于 0.11double
  • 那么我能做些什么来解决它?

标签: java string integer return double


【解决方案1】:

获取double 值的“小数”(即数字的小数位)的最简单方法是使用% 余数运算符除数为 1,即

public double drawDecimal() {
    return dD % 1;
}

这与返回 0.11000000000000032 有同样的问题,这是浮点数固有的不准确性的影响。见:Is floating point math broken?

要解决这个问题,您可以使用BigDecimal 进行相同的计算,即

public double drawDecimal() {
    return BigDecimal.valueOf(dD).remainder(BigDecimal.ONE).doubleValue();
}

结果为@​​987654328@,保持原值的“小数精度”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多