xyyxxx- 2022-03-13 17:41 采纳率: 0%
浏览 58

请问如何在Java中使用 printf();时保留小数位

Java初学者写了一段超简单的代码,成功运行。
为了在输出时保留小数位,在第43、48、49行代码改用了printf(); 报错如下。
请问各位,这是为什么?

import java.util.Scanner;
class CashierDest
{
    public static void main(String[] args) 
    {

    /* 变量名注释
    商品名称        单价            商品数量    商品金额小计    数量总计    金额总计
    goodsNname[]    goodsPrice[]    goodsNum[]    goodsMoney[]    numSum        goodsMoneySum
    */
    System.out.println("欢迎使用收银系统");
    /*
    要实现的收银结果界面
    商品    单价    数量    商品金额小计
    A                    
    ~
    F

    数量总计:
    金额总计:
    */
    char []goodsName=new char[]{'A','B','C','D','E','F'};    //声明、创建并赋值含有商品名的char型数组
    
    double[] goodsPrice=new double[6];    //声明并创建含有单价、数量和小计的double型数组
    double[] goodsNum=new double[6];
    double[] goodsMoney=new double[6];
    double goodsNumSum=0;    //声明并初始化表示总数和总计的变量
    double goodsMoneySum=0;
    Scanner in = new Scanner(System.in);
    System.out.println("请按顺序输入商品单价和数量,以空格键隔开,最后以Enter键结束");    //提示输入商品单价和数量
    for(int i=0;i<6;i++) {    //输入商品名称、单价和商品数量,计算商品金额小计、数量总计、金额总计
        System.out.println("商品"+goodsName[i]+":");
        goodsPrice[i]=in.nextDouble();
        goodsNum[i]=in.nextDouble();
        goodsMoney[i]=goodsPrice[i]*goodsNum[i];
        goodsNumSum+=goodsNum[i];
        goodsMoneySum+=goodsMoney[i];
    }
    System.out.println("");
    System.out.println("商品    单价(元)    数量    商品金额小计(元)");    //输出收银结果
    for(int i=0;i<6;i++) {
        System.out.println();
        System.out.printf("%.3lf    %.3lf    %.3lf    %.3lf    ",goodsName[i],goodsPrice[i],goodsNum[i],goodsMoney[i]);    //模仿C语言的输出方式
        //System.out.println(goodsName[i]+"    "+goodsPrice[i]+"    "+goodsNum[i]+"    "+goodsMoney[i]);    无法保留小数点
        
     }
    System.out.println("");
    System.out.printf("数量总计:%.3lf\n",goodsNumSum);
    System.out.printf("金额总计:%.3lf 元",goodsMoneySum);
    }
}

运行结果如下:

欢迎使用收银系统
请按顺序输入商品单价和数量,以空格键隔开,最后以Enter键结束
商品A:
4.556 5
商品B:
5 5
商品C:
5 5
商品D:
5 5
商品E:
5 5
商品F:
5 5

商品 单价(元) 数量 商品金额小计(元)

Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = 'l'
at java.base/java.util.Formatter$FormatSpecifier.conversion(Formatter.java:2855)
at java.base/java.util.Formatter$FormatSpecifier.(Formatter.java:2891)
at java.base/java.util.Formatter.parse(Formatter.java:2747)
at java.base/java.util.Formatter.format(Formatter.java:2671)
at java.base/java.io.PrintStream.format(PrintStream.java:1209)
at java.base/java.io.PrintStream.printf(PrintStream.java:1105)
at CashierDest.CashierDest.main(CashierDest.java:44)

  • 写回答

3条回答 默认 最新

  • 三千烦恼丝xzh 2022-03-13 17:59
    关注

    %.3lf 改完 %.3f 多了个l

    评论

报告相同问题?

问题事件

  • 修改了问题 3月13日
  • 修改了问题 3月13日
  • 修改了问题 3月13日
  • 修改了问题 3月13日
  • 展开全部

悬赏问题

  • ¥200 基于同花顺supermind的量化策略脚本编辑
  • ¥20 Html备忘录页面制作
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?