如何在java中去掉几个小数点?
我有一个类似于战斗的程序,每次攻击都会造成两个数字范围内的随机伤害,例如,一次攻击可以造成60到70的伤害。我之所以说“ish”,是因为每次我显示伤害金额时,它都会给出一个非常大的十进制数字,比如70.28326772002643 我想知道如何使它仍然显示小数,但要少得多,比如70.28。我该怎么做 这不是重复的问题,因为另一个问题有python语法,我想知道如何在Java中实现它如何在java中去掉几个小数点?,java,Java,我有一个类似于战斗的程序,每次攻击都会造成两个数字范围内的随机伤害,例如,一次攻击可以造成60到70的伤害。我之所以说“ish”,是因为每次我显示伤害金额时,它都会给出一个非常大的十进制数字,比如70.28326772002643 我想知道如何使它仍然显示小数,但要少得多,比如70.28。我该怎么做 这不是重复的问题,因为另一个问题有python语法,我想知道如何在Java中实现它 此外,它不是重复的,因为我的类型是双精度,而不是浮点型。以下内容将为您提供解决方案: public class M
此外,它不是重复的,因为我的类型是双精度,而不是浮点型。以下内容将为您提供解决方案:
public class Main {
public static void main(String[] args) {
double d1=70.28326772002643;
double d1rounded=Math.round(d1 * 100.0) / 100.0;
System.out.println(d1rounded);
double d2=70.28726772002643;
double d2rounded=Math.round(d2 * 100.0) / 100.0;
System.out.println(d2rounded);
}
}
输出:
70.28
70.29
我还建议您检查一些更好的方法。round()函数可以从double转换为integer,您可以将100相乘,然后除以100得到2位小数
double pi = Math.PI;
double pi_round = 0.01* Math.round(pi * 100);
System.out.println(pi_round);
假设您的输出是
双输出=70.28326772002643
做
新输出将等于70.28使用该方法,或:
>双d=1.23456;
>System.out.printf(“%.2f\n”,d);
1.23
>System.out.printf(“%.3f\n”,d);
1.235
>字符串格式(“%.2f”,d);
“1.23”(字符串)
>字符串格式(“%.3f”,d);
“1.235”(字符串)
签出System.out.printf
以及提到的格式
说明符文档。参与者似乎不想打印出值(因为您上面的评论有答案),他们想将其存储在十进制中。所以,它是@ThomasRokicki的复制品,它本身就是复制品的复制品。不,它不会。大多数情况下都会失败,这是必须的。请看我的答案的副本以作证明。
DecimalFormat deci = new DecimalFormat("#.00");
double newOutput = deci.format(output);