目录
项目介绍遇到的问题主要页面展示主要页面代码展示1.Show.jsp2.Cart.jsp临别赠言项目介绍
同上一篇参考着JSP程序设计教程(第二版)教材完成了简易购物车的功能实现,在此对期间遇到的问题及部分页面展示如下
遇到的问题
期间在购物车展示页面计算显示单个商品的金额时候遇到了浮点数相乘结果保留小数位数的问题,理论上3.0*2.8结果应该为8.4,但未进行小数位数保留时候在页面计算显示出来的结果却为8.39999999999,猜测其原因可能是因为计算机对数据的处理与我们数学计算的方式不太一样导致。处理前代码如下:
Double money=num*1.0*price; // 2.8*3.0结果得到8.399999999999sum+=money;//计算应付金额
特对此进行了保留两位小数的处理,采用的保留两位小数方式如下:
String money=new DecimalFormat("#.00").format(num*1.0*price);//保留两位小数sum+=Double.parseDouble(money);//计算应付金额
这样,程序按照预计的结果输出了2.8*3.0的结果为8.40。
主要页面展示
主要页面代码展示
1.Show.jsp
<%@page import="Class.Good"%><%@page import="java.util.ArrayList"%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>商城</title></head><body><% ArrayList goods=(ArrayList)application.getAttribute("goods");%><table border="1" width="450px" rules="none" cellspacing="0" cellpadding="0"><tr height="50px"><td colspan="3" align="center">提供商品如下</td></tr><tr align="center" height="20px" bgcolor="lightgrey"><td>名称</td><td>价格(元/斤)</td><td>购买</td></tr><% if(goods==null||goods.size()==0){%><tr height="100px"><td colspan="3" align="center">没有商品可显示!</td></tr><% } else{for(int i=0;i<goods.size();i++){Good good=(Good)goods.get(i);%><tr height="50px" align="center"> <td><%=good.getName() %></td><td><%=good.getPrice() %></td><td><a href="DoCart?action=buy&id=<%=i%>">购买</a></td></tr><%}}%><tr height="50px"><td align="center" colspan="3"><a href="Cart.jsp">查看购物车</a></td></tr></table></body></html>
2.Cart.jsp
<%@page import="java.text.DecimalFormat"%><%@page import="Class.Good"%><%@page import="java.util.ArrayList"%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>我的购物车</title></head><body><%ArrayList buylist=(ArrayList)session.getAttribute("buylist");//获取存储在session中的用户已买商品集合对象float sum=0;//存储应付金额%><table border="1" width="450px" rules="none" cellspacing="0" cellpadding="0"><tr height="50px"><td align="center" colspan="5">购买的商品如下</td></tr><tr height="30px" bgcolor="lightgrey"><td width="25%" align="center">名称</td><td>价格(元/斤)</td><td>数量</td><td>总价(元)</td><td>移除(-1/次)</td></tr><% if(buylist==null||buylist.size()==0){%><tr height="100px"><td align="center" colspan="5">购物车为空!</td></tr><% }else{for(int i=0;i<buylist.size();i++){Good good=(Good)buylist.get(i);String name=good.getName();//获取商品名称Double price=good.getPrice();//获取商品价格int num=good.getNum();//获取购买数量String money=new DecimalFormat("#.00").format(num*1.0*price);//保留两位小数sum+=Double.parseDouble(money);//计算应付金额//Double money=num*1.0*price; // 2.8*3.0结果得到8.399999999999//sum+=money;//计算应付金额%><tr align="center" height="50px"><td><%=name %></td><td><%=price %></td><td><%=num %></td><td><%=money %></td><td><a href="DoCart?action=remove&name=<%=good.getName() %>">移除</a></td></tr><% }}%><tr align="center" height="50px"><td colspan="5">应付金额:<%=sum %></td></tr><tr align="center" height="50px"><td colspan="2"><a href="Show.jsp">继续购买</a></td><td colspan="3"><a href="DoCart?action=clear">清空购物车</a></td></tr></table></body></html>
临别赠言
人生天地间,忽如远行客;
且行且珍惜!!!