连接字符串中的double会截断

时间:2015-11-17 16:15:58

标签: java

对于变量int department; System.out.print("Enter Department Number: "); while (sc.hasNextLine()) { String line = sc.nextLine(); if (line.matches("[123]")) { System.out.println("Invalid entry. Please enter 1, 2, or 3 for the department number."); System.out.print("Enter Department Number: "); } else { department = Integer.parseInt(line); break; } } 我正在写

double spread = 0.135;

这是试图舍入到1个基点。 (100个基点= 1%)。

但它不包含任何小数部分。

为什么?

3 个答案:

答案 0 :(得分:3)

这是整数除法截断的另一种变体;虽然比正常情况稍微深埋一层。

Math.round(spread * 10000)会返回long。将其除以100会将结果截断为long

你的修复?使用100.0作为除数。然后表达式以浮点计算。

答案 1 :(得分:2)

当您将long除以int时,您会得到long这是一个整数。简单的解决方案是除以双倍。尝试

Math.round(spread * 10000) / 100.0 + "%"

Math.round(spread * 1e4) / 1e2 + "%"

答案 2 :(得分:-1)

Round()返回一个long。因此div操作是一个很长的值。