老师,我想问一下怎么才能只保留小数点后几位呢,就是自己设置只保存1位或2/3位。

老师,我想问一下怎么才能只保留小数点后几位呢,就是自己设置只保存1位或2/3位。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕小琪 2020-04-18 16:16:20

同学你好,上面的同学说的是正确的。

也可以使用String.format()方法对小数进行四舍五入,这是String类自带的方法,无需导包。

方法结构:String String.format(String fmt, Object... args);(还有很多用法,同学暂时知道截取小数点即可)

String fmt:要截取小数点的位数,书写规则:”%.(想要取几位就写数字几)f”,

Object... args:就是同学要计算的数值。

如下图:

http://img1.sycdn.imooc.com//climg/5e9ab74c0986d45611080512.jpg

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

WilliamSCohen 2020-04-18 15:14:48
import java.text.DecimalFormat;
import java.util.Scanner;

public class ZheKouDemo {
	public void zhekou() {
		while(true) {
			DecimalFormat df = new DecimalFormat("0.0");
			System.out.println("请输入你购买的总价:");
			Scanner sc=new Scanner(System.in);
			double sum = sc.nextDouble();
			if(sum <= 100) {
				System.out.println("购买金额未满100,不打折!");
			}
			if(100<sum&sum<=199) {
				System.out.println("本次消费打95折,折后商品价格为:"+df.format((sum * 0.95)));
			}
			if(sum >=200) {
				System.out.println("本次消费打85折,折后商品价格为:"+df.format((sum * 0.85)));
			}
		}
	}

	public static void main(String[] args) {
		ZheKouDemo zk = new ZheKouDemo();
		zk.zhekou();

	}

}

这个是修改后你的代码,但是这样并不能够求道准确数值,后面小数,会进行四舍五入,当前所学的只是还比较少,如果用所学的去写,建议换种写法;

下面是我的写法:也有很多不足之处,互相学习

http://img1.sycdn.imooc.com//climg/5e9aa8e409fd88cc04330444.jpg

  • 提问者 成日不正经的 #1
    感谢感谢 互相进步 我读了你的代码 我想请问一下在不满足>=200的情况下 执行100=<sum<200为什么后面还用短路与运算符来把sum<=199的条件也写上呢 在你的代码中不是永远不会执行判断这一条件吗 希望解答一下 谢谢你
    2020-04-18 16:37:36
  • WilliamSCohen 回复 提问者 成日不正经的 #2
    是的哈,你不说我还没看到呢,刚才用Debug跑了一下,这个情况,使用短路运算符好像也没有太大的问题,判断可以执行,因为我判断的是(结果 >=100)&&(结果<=199),两边都同时满足了,然后再去执行下面的 结果*0.95。虽然我也不太确定这样写到底是否合适,但是实现了需求就可以了,目前来看没有问题
    2020-04-18 17:45:16
WilliamSCohen 2020-04-18 14:17:09

采用格式化的方式输出

  • 提问者 成日不正经的 #1
    具体怎么做呢 能根据我这个写一下修改后的代码我参考一下嘛 谢谢你
    2020-04-18 15:20:59
  • WilliamSCohen 回复 提问者 成日不正经的 #2
    我修改的代码在上面,老师写的方法也很好用
    2020-04-18 16:26:48
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师