Jig*_*shi 57
Math.round(number*100.0)/100.0;
Run Code Online (Sandbox Code Playgroud)
Raz*_*aul 33
double RoundTo2Decimals(double val) {
DecimalFormat df2 = new DecimalFormat("###.##");
return Double.valueOf(df2.format(val));
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 29
内部表示在2和2.00之间没有区别.您可以使用Math.round将值舍入到最接近的整数 - 使该轮到2位小数,您可以乘以100,舍入,然后除以100,但是您不应该期望结果正好是 2dps,因为二进制浮点运算的本质.
如果你只关心格式的数值到小数点后两位,看DecimalFormat-如果你有兴趣的小数位数在计算你应该使用BigDecimal.这样你就会知道你真的在处理十进制数字,而不是"最接近的可用double值".
如果你总是处理两个小数位,你可能想要考虑的另一个选择是将值存储为long或者BigInteger,知道它正好是"实际"值的100倍 - 例如,有效地存储美分而不是美元.
Rak*_*ani 14
import java.text.DecimalFormat;
public class RoundTest {
public static void main(String[] args) {
double i = 2;
DecimalFormat twoDForm = new DecimalFormat("#.00");
System.out.println(twoDForm.format(i));
double j=3.1;
System.out.println(twoDForm.format(j));
double k=4.144456;
System.out.println(twoDForm.format(k));
}
}
Run Code Online (Sandbox Code Playgroud)
Pri*_*ley 12
我想你需要一个格式化的输出.
System.out.printf("%.2f",d);
Run Code Online (Sandbox Code Playgroud)
avi*_*irk 11
你也可以使用这段代码
public static double roundToDecimals(double d, int c)
{
int temp = (int)(d * Math.pow(10 , c));
return ((double)temp)/Math.pow(10 , c);
}
Run Code Online (Sandbox Code Playgroud)
它可以控制需要点数后的数量.
d = number to round;
c = number of decimal places
Run Code Online (Sandbox Code Playgroud)
认为这会有所帮助
这样做会.
public static void main(String[] args) {
double d = 12.349678;
int r = (int) Math.round(d*100);
double f = r / 100.0;
System.out.println(f);
}
Run Code Online (Sandbox Code Playgroud)
你可以缩短这个方法,很容易理解这就是我写这样的原因.
| 归档时间: |
|
| 查看次数: |
233635 次 |
| 最近记录: |