DecimalFormat -> String
java.text.DecimalFormat df = new java.text.DecimalFormat("#.##");
double d = 3.14159;
System.out.println(df.format(d));
// 2
double d = 3.1415926;
String result = String .format("%.2f");
java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");
df.format(你要格式化的数字);
double d1 = 3.23456
double d2 = 0.0;
double d3 = 2.0;
df.format(d1);
df.format(d2);
df.format(d3);
原文链接:https://blog.csdn.net/shiyong1949/article/details/52641152
java.math.BigDecimal
double f = 111231.5585;
BigDecimal b = new BigDecimal(f);
doublef1 = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
下列例题就是一个关于精度的例子:
题意翻译
19世纪的德国数学家赫尔曼·闵可夫斯基(Hermann Minkowski)研究了一种名为出租车几何学的非欧几何。 在出租车几何里T1(x1,y1)T_1(x_1,y_1)T1(x1,y1) T2(x2,y2)T_2(x_2,y_2)T2(x2,y2)两点之间的距离被定义为dis(T1,T2)=∣x1−x2∣+∣y1−y2∣dis(T_1,T_2)=|x_1-x_2|+|y_1-y_2|dis(T1,T2)=∣x1−x2∣+∣y1−y2∣(曼哈顿距离)。 其他定义均与欧几里得几何相同。
例如圆的定义:在同一平面内,到定点(圆心)的距离等于定长(半径)的点的集合。
我们对欧几里得几何与出租车几何两种定义下半径为RRR的圆的面积很感兴趣。解决这个问题的重担就落在你身上了。
输入输出格式
输入格式
仅有一行为圆的半径RRR。 (R≤10000)(R \leq 10000)(R≤10000)
输出格式
第一行输出欧几里得几何下半径为RRR的圆的面积,第二行输出出租车几何下半径为RRR的圆的面积。
注意:你的输出与标准答案绝对误差不超过0.00010.00010.0001将会被认为正确
输入输出样例
输入 #1
1
输出 #1
3.141593
2.000000
输入 #2
21
输出 #2
1385.442360
882.000000
输入 #3
42
输出 #3
5541.769441
3528.000000
我的题解:
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Scanner;
public class Main{
static int[] arr=null;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
double S1;
double S2;
S1=n*n*Math.PI;
S2=2*n*n;
BigDecimal B1=new BigDecimal(S1);
BigDecimal B2=new BigDecimal(S2);
S1=B1.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue();
S2=B2.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(S1);
System.out.println(roundByScale(S2,6));
}
//此函数用来格式化
public static String roundByScale(double v, int scale) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
if(scale == 0){
return new DecimalFormat("0").format(v);
}
String formatStr = "0.";
for(int i=0;i<scale;i++){
formatStr = formatStr + "0";
}
return new DecimalFormat(formatStr).format(v);
}
}
来源:CSDN
作者:蓝冰lanbing
链接:https://blog.csdn.net/weixin_43827530/article/details/104092612