Java 将双精度转换为十进制格式?
我必须用Java为家庭作业创建一个代码,显示工资从1美分开始,每天翻倍10天。我唯一的问题是,我很难将工资转换成十进制格式,我的输出是美元,而不是美分。我对编码非常陌生,可以利用我能得到的任何帮助。我的错误是“salary”已在main中定义,但当我将十进制格式代码移到main上方时,问题仍然存在。如何将小数点移动到两位以上?我的输出在代码下发布,所以你们可以看到我的问题。谢谢Java 将双精度转换为十进制格式?,java,netbeans,formula,decimalformat,Java,Netbeans,Formula,Decimalformat,我必须用Java为家庭作业创建一个代码,显示工资从1美分开始,每天翻倍10天。我唯一的问题是,我很难将工资转换成十进制格式,我的输出是美元,而不是美分。我对编码非常陌生,可以利用我能得到的任何帮助。我的错误是“salary”已在main中定义,但当我将十进制格式代码移到main上方时,问题仍然存在。如何将小数点移动到两位以上?我的输出在代码下发布,所以你们可以看到我的问题。谢谢 import java.util.Scanner; import java.text.DecimalFormat;
import java.util.Scanner;
import java.text.DecimalFormat;
public class hw2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//Find number of days worked
int days;
System.out.println("How many days did you work under the current
salary?");
days = in.nextInt();
int num = 1;
while (num <= days)
{
double salary = Math.pow(2, (num-1));
DecimalFormat salary = new DecimalFormat("##.00");
System.out.println("Your salary for day " + num + " is $" +
salary);
num++;
}
}
}
import java.util.Scanner;
导入java.text.DecimalFormat;
公共级hw2{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
//查找工作天数
国际日;
你在当前工作环境下工作了多少天
薪金?);
天数=in.nextInt();
int num=1;
while(num您有两个同名的变量,并且您没有使用DecimalFormat
来设置薪资格式。您有两个选项来实现您想要的:
选项#1
使用DecimalFormat
格式化您的double
:
double salary = Math.pow(2, (num-1));
DecimalFormat round = new DecimalFormat("##.00");
System.out.println("Your salary for day " + num + " is $" +
round.format(salary));
请注意,您需要使用.format()
选项2
使用printf()
将输出格式化如下:
double salary = Math.pow(2, (num-1));
System.out.printf("Your salary for day %d is $%.2f%n", num, salary);
或者使用String.format()
执行相同的操作:
double salary = Math.pow(2, (num-1));
System.out.println(String.format("Your salary for day %d is $%.2f", num, salary));
出现问题的原因是您已使用变量名“salary”来引用包含实际薪资的变量。每个变量名在同一范围内只能使用一次。这就是您收到错误的原因
但是,您还需要正确使用十进制格式,以便根据需要显示结果。请参阅以了解如何执行此操作
用以下内容替换while块应给出正确的解决方案:
while (num <= days){
double salary = Math.pow(2, (num-1));
DecimalFormat salaryFormat = new DecimalFormat("##.00");
System.out.println("Your salary for day " + num + " is $" + salaryFormat.format(salary));
num++;
}
while(num将DecimalFormat
变量命名为其他变量。--乘以100将小数点移动2位。可能的重复项你读过你写的代码吗?显然,你不能在同一范围内同时拥有双倍工资
和DecimalPoint工资
。这就像乔治·福尔曼和5个名为Geo的儿子一样rge-当Foreman太太大喊George!滚开!他们怎么知道她在生哪一个的气?除了这种情况,双薪
就消失了,取而代之的是降薪
。