bigdecimal java 格式化小数点 java数据格式化

您所在的位置:网站首页 取小数点后面两位数的公式 bigdecimal java 格式化小数点 java数据格式化

bigdecimal java 格式化小数点 java数据格式化

2023-07-06 19:16| 来源: 网络整理| 查看: 265

1.数字格式化

数字格式化在实际问题中使用非常普遍,比如超市的商品价格,需要保留两位有效数字。 在Java语言中,没有经过格式化的数据遵循以下原则: 1)如果数据绝对值大于0.001且小于10000000,Java将以常规小数形式表示。 2)如果数据绝对值小于0.001或大于10000000,Java将以科学计数法形式表示。 很显然,对于开头提到的商品价格问题,通过上述原则不能满足所需的输出格式。这时,我们需要将数据格式化为指定形式后再进行输出。在Java语言中,采用java.text.DecimalFormat进行格式化数字操作。 以DecimalFormat为例,该类可用于格式化十进制数字,可以将目标数转化为整数、浮点数、百分数等。一般情况下,可以再实例化DecimalFormat对象时传递数字格式,也可通过DEecimalFormat类中的applyPattern()方法实现数字格式化。

import java.text.DecimalFormat; public class DecimalFormatSimpleDemo { // 使用实例化对象时设置格式化模式 static public void SimgleFormat(String pattern, double value) { // 实例化DecimalFormat对象 DecimalFormat myFormat = new DecimalFormat(pattern); String output = myFormat.format(value); // 将数字进行格式化 System.out.println(value + " " + pattern + " " + output); } // 使用applyPattern()方法对数字进行格式化 static public void UseApplyPatternMethodFormat(String pattern, double value) { DecimalFormat myFormat=new DecimalFormat();//实例化DecimalFormat对象 myFormat.applyPattern(pattern); // 调用applyPatten()方法设置格式化模板 System.out .println(value + " " + pattern + " " + myFormat.format(value)); } public static void main(String[] args) { SimgleFormat("###,###.###", 123456.789);// 调用静态SimgleFormat()方法 SimgleFormat("00000000.###kg", 123456.789); // 在数字后加上单位 // 按照格式模板格式化数字,不存在的位以0显示 SimgleFormat("000000.000", 123.78); // 调用静态UseApplyPatternMethodFormat()方法 UseApplyPatternMethodFormat("#.###%", 0.789); // 将数字转换为百分数形式 // 将小数点后格式化为两位 UseApplyPatternMethodFormat("###.##", 123456.789); // 将数字转化为千分数形式 UseApplyPatternMethodFormat("0.00\u2030", 0.789); } }

程序运行结果如下:

123456.789 ###,###.### 123,456.789 123456.789 00000000.###kg 00123456.789kg 123.78 000000.000 000123.780 0.789 #.###% 78.9% 123456.789 ###.## 123456.79 0.789 0.00‰ 789.00‰2.数学运算

Java中提供了基本数学运算方法Math,其中包含了三角函数、指数函数、取整函数、取最大值、最小值及平均值的方法,此外还包含如PI,E等常用的数学常量,通过以下方式即可调用。

Math.数学方法 Math.PI

以三角函数为例:

public class TrigonometricFunction { public static void main(String[] args) { // 取90度的正弦 System.out.println("90度的正弦值:" + Math.sin(Math.PI / 2)); System.out.println("0度的余弦值:" + Math.cos(0)); // 取0度的余弦 // 取60度的正切 System.out.println("60度的正切值:" + Math.tan(Math.PI / 3)); // 取2的平方根与2商的反正弦 System.out.println("2的平方根与2商的反弦值:" + Math.asin(Math.sqrt(2) / 2)); // 取2的平方根与2商的反余弦 System.out.println("2的平方根与2商的反余弦值:" + Math.acos(Math.sqrt(2) / 2)); System.out.println("1的反正切值:" + Math.atan(1)); // 取1的反正切 // 取120度的弧度值 System.out.println("120度的弧度值:" + Math.toRadians(120.0)); // 取π/2的角度 System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI / 2)); } }

运算结果如下:

90度的正弦值:1.0 0度的余弦值:1.0 60度的正切值:1.7320508075688767 2的平方根与2商的反弦值:0.7853981633974484 2的平方根与2商的反余弦值:0.7853981633974483 1的反正切值:0.7853981633974483 120度的弧度值:2.0943951023931953 π/2的角度值:90.03.随机数

一般通过Math.random()方法生成随机数,该方法默认可生成大于等于0.0且小于1.0的double型随机数,通过变形: (int)(Math.random()*n) 返回大于等于0且小于n的随机数 m+(int)(Math.random()*n) 返回大于等于m且小于m+n的随机数

例如:判断两个数之间的偶数,如果是则输出,如果不是则加1后输出

public class MathRondom { /** * 定义产生偶数的方法 * @param num1 起始范围参数 * @param num2 终止范围参数 * @return 随即的范围内偶数 */ public static int GetEvenNum(double num1, double num2) { // 产生num1~num2之间的随机数 int s = (int) num1 + (int) (Math.random() * (num2 - num1)); if (s % 2 == 0) { // 判断随机数是否为偶数 return s; // 返回 } else // 如果是奇数 return s + 1; // 将结果加1后返回 } public static void main(String[] args) { // 调用产生随机数方法 System.out.println("任意一个2~32之间的偶数:" + GetEvenNum(2, 32)); } }

运算结果如下:

任意一个2~32之间的偶数:14习题:

1.题目:获取2~32之间(不包括32)的6个偶数,取得这6个偶数之和。 代码:

/* * 获取2~32之间(不包括32)的6个偶数,取得这6个偶数之和。 * 作者:jiacy * 日期:2020-2-5 * * */ public class sl912 { /* * * @param value1 搜索起始数字 @param value2 搜索终止数字 @return 返回6个偶数之和 */ public static double Sum(double value1,double value2) { double sum = 0; //和 int count = 1; //计数 while(true) { int tmp = (int)value1 + (int)(Math.random() *(value2 - value1));//返回大于value1且小于value2的随机数 if(tmp !=0 && tmp%2 == 0) { //如果是偶数,则相加 System.out.println("第"+count +"个数为:"+tmp); sum = sum + tmp; count++; } if(count>6) //计数达到6个时终止循环 break; } return sum; } public static void main(String[] args) { System.out.println("6个偶数的总和为:" + Sum(2,32)); } }

结果:

第1个数为:8 第2个数为:2 第3个数为:28 第4个数为:16 第5个数为:10 第6个数为:14 6个偶数的总和为:78.0

2.题目:定义一个求圆面积的方法,其中以圆半径作为参数,并将计算结果保留5位小数 代码:

/* * 定义一个求圆面积的方法,其中以圆半径作为参数,并将计算结果保留5位小数 * 作者:jiacy * 日期:2020-2-5 */ import java.text.DecimalFormat; public class sl913 { static public void SimpleFormat(String pattern, double value) { //使用实例化对象时设置格式化模式 DecimalFormat myFormat = new DecimalFormat(pattern); //实例化DecimalFormat对象 String output = myFormat.format(value); //将数字进行格式化 System.out.println(value + " " + pattern + " " + output); //输出原始数据值和格式化后的数据值 } public static double GetRoundArea(double r){ return Math.PI*Math.pow(r, 2); //圆面积公式 } public static void main(String[] args) { System.out.print("圆的面积为:"); SimpleFormat("#.#####",GetRoundArea(2)); //以五位小数输出结果 } }

结果:

圆的面积为:12.566370614359172 #.##### 12.56637



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3