Java 为什么我的代码仍然在URI上显示错误的答案?
所以,我一直在练习使用URI,因为我是一个初学者,我一直在做这些简单的问题,但通过这段代码,我认为我得到了正确的答案,但每当我试图提交它时,网站总是显示错误的答案 问题是这样的 读取小数点后两位的浮点值。这代表一种货币价值。在此之后,计算可分解价值的最小可能纸币和硬币数量。所考虑的票据为100、50、20、10、5、2。可能的硬币有1枚、0.50枚、0.25枚、0.10枚、0.05枚和0.01枚。打印消息“NOTAS:”后接纸币列表,消息“MOEDAS:”后接硬币列表 输入 输入文件包含浮点N(0)的值≤ N≤ 1000000.00) 输出 打印更改初始值所需的最小数量的纸币和硬币,如给定示例所示 输入样本Java 为什么我的代码仍然在URI上显示错误的答案?,java,Java,所以,我一直在练习使用URI,因为我是一个初学者,我一直在做这些简单的问题,但通过这段代码,我认为我得到了正确的答案,但每当我试图提交它时,网站总是显示错误的答案 问题是这样的 读取小数点后两位的浮点值。这代表一种货币价值。在此之后,计算可分解价值的最小可能纸币和硬币数量。所考虑的票据为100、50、20、10、5、2。可能的硬币有1枚、0.50枚、0.25枚、0.10枚、0.05枚和0.01枚。打印消息“NOTAS:”后接纸币列表,消息“MOEDAS:”后接硬币列表 输入 输入文件包含浮点N(
576.73 输出样本
NOTAS:
5 nota(s) de R$ 100.00
1 nota(s) de R$ 50.00
1 nota(s) de R$ 20.00
0 nota(s) de R$ 10.00
1 nota(s) de R$ 5.00
0 nota(s) de R$ 2.00
MOEDAS:
1 moeda(s) de R$ 1.00
1 moeda(s) de R$ 0.50
0 moeda(s) de R$ 0.25
2 moeda(s) de R$ 0.10
0 moeda(s) de R$ 0.05
3 moeda(s) de R$ 0.01
这是密码
import java.io.IOException;
import java.util.Scanner;
import java.text.DecimalFormat;
import java.math.RoundingMode;
public class Main {
private static DecimalFormat df=new DecimalFormat("0.00");
public static void main(String[] args) throws IOException
{
double a;
int b[]={100,50,20,10,5,2};
double c[]={1,0.5,0.25,0.1,0.05,0.01};
int i,d;
Scanner sc= new Scanner(System.in);
a=sc.nextDouble();
System.out.println("NOTAS:");
for(i=0;i<6;i++)
{
d=(int)(a/b[i]);
System.out.println(d+" nota(s) de R$ "+df.format(b[i]));
a=a%b[i];
}
System.out.println("MOEDAS:");
for(i=0;i<6;i++)
{
int e=(int)(a/c[i]);
System.out.println(e+" moeda(s) de R$ "+df.format(c[i]));
a=a%c[i];
}
}
}
import java.io.IOException;
导入java.util.Scanner;
导入java.text.DecimalFormat;
导入java.math.RoundingMode;
公共班机{
私有静态DecimalFormat df=新的DecimalFormat(“0.00”);
公共静态void main(字符串[]args)引发IOException
{
双a;
int b[]={100,50,20,10,5,2};
双c[]={1,0.5,0.25,0.1,0.05,0.01};
int i,d;
扫描仪sc=新的扫描仪(System.in);
a=sc.nextDouble();
System.out.println(“NOTAS:”);
对于(i=0;iOk),我发现的问题是-
双精度模运算结果可能会使最终结果变差。例如,0.73%0.50=0.22999999998
,我原本预计为0.23
可能的解决方案-
修正那些奇怪的模替换下面的行-
与
这将0.22999…
thing值舍入为0.23
您可以通过在0.73
案例前后更改上述代码语句来确认不同的结果。您会发现,在2 moeda(s)de R$0.01之前的版本与在3 moeda(s)正确的3之后的版本相比de R$0.01
预期的输出是什么?我包括了整个问题。它也显示了预期的输出。我得到的输出与预期的输出相同,但问题是网站仍然错误地显示它submission@Codered嗯,也许还有其他问题。我解决了我能找到的。你能分享其他东西吗,比如n错误或什么,失败的测试用例?否则,我唯一的怀疑是它不适合一些奇怪的测试用例,输出格式不正确,整数或双溢出。你能提供问题的链接吗?谢谢。谢谢兄弟,我再次尝试,发现问题就是你之前提到的。欢迎兄弟。很抱歉,我几乎忘记了work'n的内容,并且没有创建帐户并尝试为自己提交,但很高兴听到您的问题在@Codered解决了
a=a%c[i];
a=Double.parseDouble(df.format(a%c[i]));