java整数分区设置精度

时间:2015-05-14 22:44:25

标签: java string

我有两个整数

int a = 5324;
int b = 5;

划分" a" by" b"我应该得到答案" 1064.8"。我想将此答案转换为字符串。我期待我的字符串是" 1064.8"。我对" 8"感兴趣在"。"

之后

如何确保我的字符串在"之后确实包含1个字符。"

这是我的尝试:

float answer = ((float) a)/b;
String s = answer.toString();
Character result = s.charAt(s.length()-1);

但是,我无法确保我的结果与"之后的字符相同。"

3 个答案:

答案 0 :(得分:7)

您可以将结果乘以10,以便您感兴趣的数字是整数除法结果中的最后一位数。然后,您可以使用% 10获取最后一个10位数:

class Test {
  public static void main(String[] args) {
    int a = 5324;
    int b = 5;

    int fixedpointresult = 10*a/b;
    int lastDigit = fixedpointresult % 10;

    System.out.println(lastDigit);
  }
}

这打印8

答案 1 :(得分:4)

我假设您要以精度为1打印结果。 String.format()为此提供了支持:

float answer = ((float) a)/b;    
String out = String.format("%.1f",answer);

或者您可以使用DecimalFormat

  DecimalFormat myFormatter = new DecimalFormat(""###.#"");
  String output = myFormatter.format(value);

其他参考和示例为here

如果你真的只对.背后的第一个字符感兴趣,那么其他人answer就可以了。

答案 2 :(得分:0)

此解决方案将为您提供小数点后的第一个数字char:

char result = Character.forDigit(int(((float)(a%b) / b) * 10), 10);
  1. 获取模数值:4
  2. 将其抛向浮动并将其除以b:0.8
  3. 在小数点前面加上所需的数字:8.0
  4. 将它投射到int以切断任何休息(在这种情况下没有):8
  5. 使用Character.forDigit()
  6. 将其转换为char