当前位置: 首页 > news >正文

网站建设必须要服务器吗h5页面制作工具app

网站建设必须要服务器吗,h5页面制作工具app,免费线上商城小程序,网站备案与域名关系作者#xff1a;孙玉昌#xff0c;昵称【一一哥】#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们知道#xff0c;在现实世界里#xff0c;实际上数字是有无穷个的#xff0c;就比如0和1之间孙玉昌昵称【一一哥】另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们知道在现实世界里实际上数字是有无穷个的就比如0和1之间你说有多少个数字无数个谁也不知道有多少个吧。但是在计算机中数字的个数其实是有限的因为计算机有存储空间的限制所以实际上无论是整数还是浮点数都是有最大范围的。比如在Java中整型的最大范围是64位的long型整数。但是有的小伙伴问了如果我们使用的整数超过了long型的范围怎么办此时我们可以通过软件来模拟一个大整数或大浮点数。 在Java中提供了两个用于大数字运算的类分别是java.math.BigInteger类 和 java.math.BigDecimal类。这两个类都可以用于高精度计算BigInteger类是针对整型大数字的处理类而BigDecimal类是针对大小数的处理类我们可以用它们来表示任意大小的整数和浮点数。接下来壹哥再带大家来学习一下在Java中如何处理大数字。 -----------------------------------------------前戏已做完精彩即开始--------------------------------------------- 全文大约【3800】字不说废话只讲可以让你学到技术、明白原理的纯干货本文带有丰富的案例及配图视频让你更好地理解和运用文中的技术概念并可以给你带来具有足够启迪的思考...... 配套开源项目资料 Github GitHub - SunLtd/LearnJava Gitee 一一哥/从零开始学Java 一. BigInteger类 1. 简介 壹哥在之前给大家讲解8种基本类型时就说过不同的数据类型有不同的取值范围我们再通过下表回顾一下 类型 所占字节(byte) 所占位数(bit) 取值范围 byte 1 8 -2^7 ~ 2^7-1 short 2 16 -2^15 ~2^15-1 int 4 32 -2^31 ~ 2^31-1 long 8 64 -2^63 ~ 2^63-1 char 2字节 16位 0~65535 float 4字节 32位 ±3.4E38 double 8字节 64位 ±1.7E308 boolean 4字节 32位 true\false 从上表中我们可以看到整型的最大取值范围是-2^63 ~ 2^63-1浮点型的最大取值范围是±1.7E308。但是不管这个范围有多大有些小伙伴就想杠一下如果我就要存一个比Integer或Long更大的数字怎么办 针对这种大整数的需求我们可以使用BigInteger它的数字范围比 Integer类型的数字范围要大得多而且BigInteger支持任意精度的整数。也就是说在运算中BigInteger类型可以准确地表示任何大小的整数值。BigInteger和Integer、Long一样都是Number的子类属于不可变类。它自身带有一些可以进行运算的方法包括基本的加、减、乘、除操作还有很多较为高级的操作像求绝对值、相反数、最大公约数及判断是否为质数等所以BigInteger用起来是比较方便的。 2. 使用方法 2.1 常用API方法 如果我们要使用BigInteger类首先要创建一个BigInteger对象。BigInteger类提供了多个构造方法其中最直接的一个是以字符串作为参数的构造方法即BigInteger(String val)。在创建BigInteger对象之后我们就可以调用BigInteger类提供的方法进行各种数学运算了这些常用的API方法如下 方法名称 说明 add(BigInteger val) 做加法运算 subtract(BigInteger val) 做减法运算 multiply(BigInteger val) 做乘法运算 divide(BigInteger val) 做除法运算 remainder(BigInteger val) 做取余数运算 divideAndRemainder(BigInteger val) 做除法运算返回数组的第一个值为商第二个值为余数 pow(int exponent) 做参数的 exponent 次方运算 negate() 取相反数 shiftLeft(int n) 将数字左移 n 位如果 n 为负数则做右移操作 shiftRight(int n) 将数字右移 n 位如果 n 为负数则做左移操作 and(BigInteger val) 做与运算 or(BigInteger val) 做或运算 compareTo(BigInteger val) 做数字的比较运算 equals(Object obj) 当参数 obj 是 Biglnteger 类型的数字并且数值相等时返回 true, 其他返回 false min(BigInteger val) 返回较小的数值 max(BigInteger val) 返回较大的数值 2.2 基本案例 我们先来通过一个案例来验证一下BigInteger中的数字到底有多大。 public static void main(String[] args) {//创建一个BigInteger对象BigInteger bi new BigInteger(1234567890);//计算1234567890的15次方//结果23589821655914838120947036369147203948318169938519404175968425823418008249115809912616071588527110255905622789563711716349000000000000000System.out.println(bi.pow(15)); } 我们会发现BigInteger可以表示一个非常大的数字比Integer、Long的范围都要大。 2.3 类型转换 壹哥在上面说过BigInteger其实是Number的子类我们知道Number中定义了几个负责类型转换的方法比如 转换为bytebyteValue()转换为shortshortValue()转换为intintValue()转换为longlongValue()转换为floatfloatValue()转换为doubledoubleValue() 我们利用上述几个方法就可以把BigInteger转换成基本类型。但是大家要注意如果BigInteger表示的范围超过了基本类型的范围在转换时会丢失高位信息也就是说结果不一定准确。所以如果我们需要准确地转换成基本类型可以使用intValueExact()、longValueExact()这样的方法。不过这种方法在转换时如果超出了基本类型的范围会直接抛出ArithmeticException异常。我们来验证一下吧。 public static void main(String[] args) {//BigInteger转基本类型BigInteger bi02 new BigInteger(123456789000);//123456789000System.out.println(转为int类型bi02.intValue()); System.out.println(转为float类型bi02.floatValue()); System.out.println(转为long类型bi02.longValue()); //将123456789000乘以123456789000然后将结果转为long类型//java.lang.ArithmeticException: BigInteger out of long rangeSystem.out.println(得到精确结果bi02.multiply(bi02).longValueExact()); } 但是如果BigInteger的值超过了float的最大范围(3.4x1038)结果并不会出现ArithmeticException异常而是会出现Infinity如下所示 //计算999999的99次方并得到该结果的float值 BigInteger bi03 new BigInteger(999999).pow(99); float f bi03.floatValue(); System.out.println(结果f); 2.4 其他用法 接下来我们再来看看其他的API方法都有哪些作用。 import java.math.BigInteger; import java.util.Scanner;/*** author 一一哥Sun */ public class Demo10 {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println(请输入一个整数:);// 保存用户输入的数字int num scanner.nextInt();// 使用输入的数字创建BigInteger对象BigInteger bi new BigInteger(num );// 计算大数字加上99的结果System.out.println(加法的结果: bi.add(new BigInteger(99)));// 计算大数字减去25的结果System.out.println(减法的结果: bi.subtract(new BigInteger(25)));// 计算大数字乘以3的结果System.out.println(乘法的结果: bi.multiply(new BigInteger(3)));// 计算大数字除以2的结果System.out.println(除法的结果: bi.divide(new BigInteger(2)));// 计算大数字除以3的商System.out.println(取商的结果: bi.divideAndRemainder(new BigInteger(3))[0]);// 计算大数字除以3的余数System.out.println(取余的结果: bi.divideAndRemainder(new BigInteger(3))[1]);// 计算大数字的4次方System.out.println(4次方的结果: bi.pow(4));// 计算大数字的相反数System.out.println(取反的结果: bi.negate());}} 在上述案例中我们将用户输入的数字作为 BigInteger 对象的参数然后调用该对象的各种方法实现了加、减、乘、除等运算并输出了最终的结果。 二. BigDecimal类 1. 简介 虽然都是用于大数字运算的类但BigDecimal加入了小数的概念所以是可以操作小数的。而float 和 double类型只能用来进行科学计算或工程计算并不适用于精度要求较高的商业计算(如货币计算)所以要用到支持任何精度的BigDecimal类。该类中提供了一系列对应的方法可以用来做超大浮点数的运算像加、减、乘和除等。在所有运算中除法运算是最复杂的因为存在除不尽的情况需要我们考虑末位小数的处理方式。 2. 使用方法 2.1 常用构造方法 以下是BigDecimal类的常用构造方法 BigDecimal(double val)实例化对象时可以将双精度型转换为BigDecimal类型BigDecimal(String val)实例化对象时可以将字符串形式转换为BigDecimal类型。 2.2 常用API方法 除了构造方法之外BigDecimal还提供了一些常用的API方法供我们进行数学运算。这些方法与BigInteger的方法类型很多方法名称和用法也都与之一致所以这里壹哥就不再一一列出了接下来我就直接通过一个案例给大家演示这些方法如何使用。 import java.math.BigDecimal;/*** author 一一哥Sun V我领资料syc_2312119590 各平台都有壹哥的同名博客哦*/ public class Demo11 {public static void main(String[] args) {BigDecimal bd new BigDecimal(1000.05800);// 计算大数字加上99的结果System.out.println(加法的结果: bd.add(new BigDecimal(99)));// 计算大数字减去25的结果System.out.println(减法的结果: bd.subtract(new BigDecimal(25)));// 计算大数字乘以1000的结果System.out.println(乘法的结果: bd.multiply(new BigDecimal(1000)));//获取小数的位数5System.out.println(bd.scale()); //去掉BigDecimal末尾的0返回一个与原有BigDecimal相等的新对象BigDecimal bd2 bd.stripTrailingZeros();System.out.println(bd2.scale()); }} 在上述代码中stripTrailingZeros()方法用于去掉BigDecimal末尾的0并返回一个与原有BigDecimal相等的新对象。而scale()方法用于获取一个数字后面0的个数如果返回的是负数比如-2则表示该数是一个整数且末尾有2个0。 2.3 divide()除法 BigDecimal进行加、减、乘时数字的精度不会丢失但是进行除法运算时有可能会出现无法除尽的情况此时必须指定精度以及如何进行截断。BigDecimal给我们提供了divide()和divideAndRemainder()两个方法可以进行除法运算。 其中divide()方法有3个参数分别表示除数、商的小数点后的位数和近似值的处理模式下表是壹哥给大家列出的roundingMode参数支持的处理模式。 模式名称 说明 BigDecimal.ROUND_UP 商的最后一位如果大于 0则向前进位正负数都如此。 BigDecimal.ROUND_DOWN 商的最后一位无论是什么数字都省略 BigDecimal.ROUND_CEILING 商如果是正数按照 ROUND_UP 模式处理如果是负数按照 ROUND_DOWN模式处理 BigDecimal.ROUND_FLOOR 与 ROUND_CELING 模式相反商如果是正数按照 ROUND_DOWN 模式处理如果是负数按照 ROUND_UP 模式处理 BigDecimal.ROUND_HALF_ DOWN 对商进行五舍六入操作。如果商最后一位小于等于 5则做舍弃操作否则对最后一位进行进位操作 BigDecimal.ROUND_HALF_UP 对商进行四舍五入操作。如果商最后一位小于 5则做舍弃操作否则对最后一位进行进位操作 BigDecimal.ROUND_HALF_EVEN 如果商的倒数第二位是奇数则按照 ROUND_HALF_UP 处理如果是偶数则按照 ROUND_HALF_DOWN 处理 import java.math.BigDecimal; import java.math.RoundingMode;/*** author 一一哥Sun*/ public class Demo12 {public static void main(String[] args) {BigDecimal d1 new BigDecimal(123.456);BigDecimal d2 new BigDecimal(123.456789);// 会产生ArithmeticException异常因为除不尽,可以设置RoundingMode按照指定的方法进行四舍五入或者直接截断//BigDecimal d3 d1.divide(d2); // 保留10位小数并四舍五入BigDecimal d4 d1.divide(d2, 10, RoundingMode.HALF_UP); System.out.println(d4d4);//按指定的位数直接截断0.xxxxBigDecimal d5 d1.divide(d2, 4, RoundingMode.DOWN); System.out.println(d5d5);} } 2.4 divideAndRemainder()除法 而divideAndRemainder()方法会返回一个数组内部包含两个BigDecimal分别是商和余数其中商总是整数余数不会大于除数所以我们可以利用这个方法来判断两个BigDecimal是否是整数倍数。 import java.math.BigDecimal; import java.math.RoundingMode;/*** author 一一哥Sun */ public class Demo12 {public static void main(String[] args) {//divideAndRemainder方法返回一个数组该数组内部包含了两个BigDecimal分别是商和余数其中商总是整数余数不会大于除数。//我们可以利用这个特性来判断两个BigDecimal是否是整数倍数。BigDecimal n new BigDecimal(123.456);BigDecimal m new BigDecimal(0.123);BigDecimal[] dr n.divideAndRemainder(m);System.out.println(dr[0]); // 1003System.out.println(dr[1]); // 0.087if (dr[1].signum() 0) {// n是m的整数倍System.out.println(n是m的整数倍); }else {System.out.println(n不是m的整数倍); }} } 3. 比较两个BigDecimal 如果我们想比较两个BigDecimal的值是否相等需要特别注意请不要使用equals()方法因为使用该方式进行比较时不但要求两个BigDecimal的值相等还要求它们的scale()结果也相等。所以一般是建议使用compareTo()方法来比较它会根据两个值的大小分别返回负数、正数和0分别表示小于、大于和等于。如下所示 import java.math.BigDecimal;/*** author 一一哥Sun*/ public class Demo13 {public static void main(String[] args) {BigDecimal d1 new BigDecimal(123.456);BigDecimal d2 new BigDecimal(123.456000);// false,因为scale不同System.out.println(d1d2? d1.equals(d2)); // true,因为d2去除尾部0后scale变为2System.out.println(d1d2? d1.equals(d2.stripTrailingZeros())); //结果0负数表示小于正数表示大于0表示等于System.out.println(d1d2? d1.compareTo(d2));}}之所以需要使用compareTo()方法来比较两个BigDecimal的值才准确这是因为一个BigDecimal实际上由一个BigInteger和一个scale组合而成的其中BigInteger表示一个完整的整数scale表示小数位数。如下图所示 compareTo()方法内部会对小数位数进行判断所以更准确如下图 4. 配套视频 与本节内容配套的视频链接如下 External Player - 哔哩哔哩嵌入式外链播放器 -----------------------------------------------正片已结束来根事后烟--------------------------------------------- 三. 结语 至此壹哥就把BigInteger、BigDecimal等大数字类介绍完毕了最后给大家总结一下今天的重点内容 BigInteger用于表示任意大小的整数BigInteger是不变类并且继承自Number将BigInteger转换成基本类型时可使用longValueExact()等方法保证结果准确BigDecimal用于表示精确的小数常用于财务计算比较BigDecimal的值是否相等必须使用compareTo()而不能使用equals()。 如果你独自学习觉得有很多困难可以加入壹哥的学习互助群大家一起交流学习。
http://www.dnsts.com.cn/news/127056.html

相关文章:

  • 天河网站(建设信科网络)网站作业免费下载
  • 网站审批需要什么手续创作网站
  • 20m做网站快速创建一个网站
  • .net 网站开发权限设计东莞网站排名优化seo
  • 怎么用电脑做网站虚拟空间高端的咨询行业网站设计
  • 河源建设工程交易中心网站欧美做瞹瞹嗳免费视频网站
  • 做网站是否要去工商备案公司建设网站费用如何入帐
  • 东莞微客巴巴做网站开源php网站开发
  • 网站系统灵活性wordpress电影网站模板
  • 国企网站建设标准wordpress 安卓
  • 网站建设及管理基本要求永州网页定制
  • 网站建设工作具体内容北京做机柜空调的网站
  • 聊城哪里网站做的好营销手机系统安装
  • 公司网站建设管理制度什么是网站维护费
  • 如何查到网站是谁做的小游戏免费入口
  • 张家港网站哪家做的好移动端h5页面开发流程
  • 东莞模板网站设计建设厅企业锁在哪个网站登录
  • 青海报社网站建设公司免费法律咨询
  • 不属于c2c网站的是网站logo设计制作
  • 关于手机的网站有哪些内容吗如何做网站本地服务器
  • 电子商务网站建设与管理考试例题个体工商网上年检
  • 做电商有哪些网站有哪些内容南京十大广告公司
  • 建设大型网站的公司Wordpress生成密码加密方式
  • 网站业务怎么做的地方门户类网站
  • 晋江市住房建设局网站浙江人工智能建站系统软件
  • 网站建设的建议网页设计与网站建设试卷
  • 公司网站是否有必要销售产品网站建设的目的是什么
  • 备案怎么关闭网站浙江温州网络公司
  • p2p理财网站开发要求数据线 东莞网站建设
  • 企业网站的价值体现是在临夏金属装饰网站建设