题目:计算球的体积
对于半径为r的球,其体积的计算公式为V=4/3*∏r3(三分之四乘以∏乘以r乘以r乘以r),这里取∏=3.14。现给定r,即球半径,类型为double,求球的体积V,保留到小数点后2位。
输入:输入一个不超过100的非负实数,即球半径,类型为double。
输出:输出一个实数,即球的体积,保留到小数点后2位。

import java.math.BigDecimal;
import java.util.Scanner;
/*** @author zql*/
public class BallVolume {@SuppressWarnings("resource")public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("请输入一个不超过100的非负实数");double r = in.nextDouble();if (r <= 0 || r > 100) {System.out.println("输入的数据不合法!");} else {System.out.println("球的体积为:" + getBallVolume(r));}}/*** 获取球的体积* * @param r 半径* @return 球的体积*/public static double getBallVolume(double r) {BigDecimal r3 = new BigDecimal(r);// 等价于r*r*rr3 = r3.multiply(r3).multiply(r3);BigDecimal v = new BigDecimal(4);// 等价于4 / 3 * 3.14 * r * r * r,这里需要注意的是,4/3结果是无限循环小数,所以需要处理精度问题// 否则会报Non-terminating decimal expansion; no exact representable decimal resultv = v.divide(new BigDecimal(3), 10, BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(3.14)).multiply(r3);// 保留两位小数,五舍六入return v.setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue();}
}

知识点如下:
方法介绍

方法 说明
add(BigDecimal) BigDecimal对象中的值相加,然后返回这个对象。
subtract(BigDecimal) BigDecimal对象中的值相减,然后返回这个对象。
multiply(BigDecimal) BigDecimal对象中的值相乘,然后返回这个对象。
divide(BigDecimal) BigDecimal对象中的值相除,然后返回这个对象。
toString() 将BigDecimal对象的数值转换成字符串。
doubleValue() 将BigDecimal对象中的值以双精度数返回。
floatValue() 将BigDecimal对象中的值以单精度数返回。
longValue() 将BigDecimal对象中的值以长整数返回。
intValue() 将BigDecimal对象中的值以整数返回。

特别说明,使用divide时,建议设置小数位数,即使用divide(BigDecimal divisor, int scale, int roundingMode)方法,否则出现无限循环小数时,会报Non-terminating decimal expansion; no exact representable decimal result错误,其中,divisor是除数,scale是小数位数,roundingMode是小数模式。
小数模式介绍

模式 说明
BigDecimal.ROUND_HALF_UP 四舍五入
BigDecimal.ROUND_HALF_DOWN 五舍六入
BigDecimal.ROUND_UP 进位处理(就是直接加1)
BigDecimal.ROUND_DOWN 直接去掉尾数
BigDecimal.ROUND_UNNECESSARY 不需要舍入操作
BigDecimal.ROUND_HALF_EVEN 如果舍弃部分左边的数字为奇数,则四舍五入,如果为偶数,五舍六入
BigDecimal.ROUND_FLOOR 如果 BigDecimal 为正,直接去掉尾数,如果为负,进位处理,注意,这种舍入模式永远不会增加计算值。
BigDecimal.ROUND_CEILING 如果 BigDecimal 为正,进位处理,如果为负,直接去掉尾数,注意,这种舍入模式不会降低计算值。

构造器介绍

构造器 说明
BigDecimal(int) 创建一个具有参数所指定整数值的对象。
BigDecimal(double) 创建一个具有参数所指定双精度值的对象。
BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。

java算法编程题:计算球的体积相关推荐

  1. C语言简单编程:计算球的体积和面积

    今天用 C语言做一个计算球的体积和表面积的程序. 首先我们要知道球的体积和表面积计算公 对于公式中用到的圆周率PI我们使用"宏替换"来实现.我们定义为大写字母PI并使之被替换的值为 ...

  2. C语言简单编程:计算球的体积

    今天用C语言做一个计算球的大致体积的程序. 首先我们都知道,球的体积公式是 S = 4 3 π r 3 \boxed{S=\frac 4 3\pi\def\foo{r^3} \foo} S=34​πr ...

  3. java算法编程题_【java题目】考验你编程能力和算法的时候到了

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我写的,但是算法很复杂,唉,求高手啊 package com.sky.woodwall; import java.util.ArrayList; im ...

  4. java算法编程题:士兵列队问题

    题目:300名士兵分别编号为1-300,按顺序排成一排,长官下令:"双数士兵出列!",剩下的士兵重新按原序编号.长官下令:"双数士兵出列!",如此进行下去直到最 ...

  5. 实现计算体积关键算法。根据输入的半径值,计算球的体积。输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。输出对应球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。

    实现计算体积关键算法.根据输入的半径值,计算球的体积.输入数据有多组,每组占一行,每行包括一个实数,表示球的半径.输出对应球的体积,对于每组输入数据,输出一行,计算结果保留三位小数. 注:PI = 3 ...

  6. 计算球的体积-java

    题目描述: 根据输入的半径值,计算球的体积. 输入: 输入数据有多组,每组占一行,每行包括一个实数,表示球的半径. 输出: 输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数. 样例 ...

  7. system verilog编程题_拼多多2020校招部分算法编程题合集

    拼多多2020校招部分算法编程题2道,多多的魔术盒子和多多的排列函数 其实根据他的匹配职位我们可以看到,这5道题的难度还是并不高,只是作为一个初步筛选,我这边选择了前两道跟大家分享 [编程题一] 多多 ...

  8. 零基础学Java语言---编程题

    零基础学Java语言-编程题 注意:没有上机实际测过,代码仅供参考 1.温度转换 写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32 其中C表示摄氏温度,F表示 ...

  9. 【面试锦囊】14种模式搞定面试算法编程题(8-14)

    面试锦囊之知识整理系列 面试锦囊系列一直有收到大家的反馈,包括后台内推成功的消息.朋友的同事从创业小公司成功跳到huawei等等,非常高兴小破号的这些整理分享能够真正地帮助到大家,以后也会继续.为了更 ...

  10. 14种模式解决面试算法编程题(PART I)

    万万没想到,暑假还没开始,有些公司的秋招提前批已经来了-很慌-数据结构和算法题可以说是秋招笔试面试必考的内容,如果你还不够熟练(just like me),那就要从现在开始疯狂刷题了啊朋友们. 附上我 ...

最新文章

  1. 设备物理像素、设备独立像素
  2. Google Guava 概要
  3. k8s redis集群_基于K8S部署redis哨兵集群
  4. 随手小记:快速适应未必是个好策略
  5. Spring配置实现AOP
  6. MAC安装Mysql超详细完整教程
  7. 延迟队列DelayQueue研究
  8. kappa一致性检验
  9. python裂缝检测_通过opencv-python检测裂缝
  10. JS Array转JSON
  11. MySQL45讲学习笔记(二)
  12. 齐齐哈尔2021高考成绩查询,2021齐齐哈尔市地区高考成绩排名查询,齐齐哈尔市高考各高中成绩喜报榜单...
  13. Brotli压缩算法
  14. javaFx(7)文本阅读器
  15. MATLAB | 那些你不得不知道的MATLAB小技巧(一)
  16. PowerPoint输出图片分辨率设置
  17. mybatis的几种锁
  18. Cobalt Strike(三)DNS beacon 的使用与原理
  19. 软件需求分析和需求文档解读
  20. 预训练模型与传统方法在排序上有啥不同?

热门文章

  1. (轉貼) 馬英九特別費案起訴書全文 (News)
  2. 死循环之----恐怖游轮
  3. Springboot-banner图-定制化
  4. TCP归纳总结,一图流
  5. 深度卷积网络:第三课
  6. 车金融|金融产品规则引擎的前世今生(下篇)
  7. mysql 不等于 优化_Mysql优化
  8. 文本匹配-bimpm
  9. 小米mix2android o升级,小米MIX2升级Android 8.0 全面屏手势操作将一同推送
  10. 【基础服务-软路由】ESXI里ikuai+openwrt上网设置