java算法编程题:计算球的体积
题目:计算球的体积
对于半径为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算法编程题:计算球的体积相关推荐
- C语言简单编程:计算球的体积和面积
今天用 C语言做一个计算球的体积和表面积的程序. 首先我们要知道球的体积和表面积计算公 对于公式中用到的圆周率PI我们使用"宏替换"来实现.我们定义为大写字母PI并使之被替换的值为 ...
- C语言简单编程:计算球的体积
今天用C语言做一个计算球的大致体积的程序. 首先我们都知道,球的体积公式是 S = 4 3 π r 3 \boxed{S=\frac 4 3\pi\def\foo{r^3} \foo} S=34πr ...
- java算法编程题_【java题目】考验你编程能力和算法的时候到了
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我写的,但是算法很复杂,唉,求高手啊 package com.sky.woodwall; import java.util.ArrayList; im ...
- java算法编程题:士兵列队问题
题目:300名士兵分别编号为1-300,按顺序排成一排,长官下令:"双数士兵出列!",剩下的士兵重新按原序编号.长官下令:"双数士兵出列!",如此进行下去直到最 ...
- 实现计算体积关键算法。根据输入的半径值,计算球的体积。输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。输出对应球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。
实现计算体积关键算法.根据输入的半径值,计算球的体积.输入数据有多组,每组占一行,每行包括一个实数,表示球的半径.输出对应球的体积,对于每组输入数据,输出一行,计算结果保留三位小数. 注:PI = 3 ...
- 计算球的体积-java
题目描述: 根据输入的半径值,计算球的体积. 输入: 输入数据有多组,每组占一行,每行包括一个实数,表示球的半径. 输出: 输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数. 样例 ...
- system verilog编程题_拼多多2020校招部分算法编程题合集
拼多多2020校招部分算法编程题2道,多多的魔术盒子和多多的排列函数 其实根据他的匹配职位我们可以看到,这5道题的难度还是并不高,只是作为一个初步筛选,我这边选择了前两道跟大家分享 [编程题一] 多多 ...
- 零基础学Java语言---编程题
零基础学Java语言-编程题 注意:没有上机实际测过,代码仅供参考 1.温度转换 写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32 其中C表示摄氏温度,F表示 ...
- 【面试锦囊】14种模式搞定面试算法编程题(8-14)
面试锦囊之知识整理系列 面试锦囊系列一直有收到大家的反馈,包括后台内推成功的消息.朋友的同事从创业小公司成功跳到huawei等等,非常高兴小破号的这些整理分享能够真正地帮助到大家,以后也会继续.为了更 ...
- 14种模式解决面试算法编程题(PART I)
万万没想到,暑假还没开始,有些公司的秋招提前批已经来了-很慌-数据结构和算法题可以说是秋招笔试面试必考的内容,如果你还不够熟练(just like me),那就要从现在开始疯狂刷题了啊朋友们. 附上我 ...
最新文章
- 设备物理像素、设备独立像素
- Google Guava 概要
- k8s redis集群_基于K8S部署redis哨兵集群
- 随手小记:快速适应未必是个好策略
- Spring配置实现AOP
- MAC安装Mysql超详细完整教程
- 延迟队列DelayQueue研究
- kappa一致性检验
- python裂缝检测_通过opencv-python检测裂缝
- JS Array转JSON
- MySQL45讲学习笔记(二)
- 齐齐哈尔2021高考成绩查询,2021齐齐哈尔市地区高考成绩排名查询,齐齐哈尔市高考各高中成绩喜报榜单...
- Brotli压缩算法
- javaFx(7)文本阅读器
- MATLAB | 那些你不得不知道的MATLAB小技巧(一)
- PowerPoint输出图片分辨率设置
- mybatis的几种锁
- Cobalt Strike(三)DNS beacon 的使用与原理
- 软件需求分析和需求文档解读
- 预训练模型与传统方法在排序上有啥不同?