大家好,又见面了,我是你们的朋友全栈君。...NumberStyles.AllowDecimalPoint); 可以正常转换, 而 a=100.9 时 long b=long.parse(a,NumberStyles.AllowDecimalPoint); 转换失败,报超过Int64...的最大值或最小值, 原因解释: 问题一:long是整形也就是Int64类型,parse的对象必须是整形 问题二: 当a =100.0 时 long b=long.parse(a,NumberStyles.AllowDecimalPoint...实际上是允许有小数点的出现,但作为long,还是不能parse非整数,此时的a是100.00,是可以丢去小数点作为整数的。...问题三: 此时的a变成100.1,同样使用了NumberStyles.AllowDecimalPoint,但这时候long所parse的不再是一个整数,所以会提出异常,超过int64也就是long的范围
因此我们定义了 BigInteger/BigDecimal 类来保存这类数据,实际是以字符串形式在堆区存储。BigInteger 类主要用来操作比 long 类型更大的整型数字。...BigDecimal 类基于 BigInteger 类实现。由于基本浮点数类型(float/double) 会产生精度丢失问题,因此常使用 BigDecimal 类代替。涉及金额必须使用该类。...y.setScale(3, rules); // 设置精度和保留规则Copy to clipboardErrorCopied枚举Enum 类(JDK 1.5 新增)比 Class 类多了部分特殊约束的特殊类型...自定义枚举类实际是继承 Enum 类的 final 类,在类中将自定义该类型的 public static final 属性,并引入了相关方法。...实际开发中,枚举类通常的形式是有两个参数(int code,Sring msg)的构造器,可以作为状态码进行返回。
也就是说我们创建 def temp=12.3默认的类型是BigDecimal,而不是float类型。...但是我们可以通过在参数值添加f,或者d来告知def类型为float或者double,示例如下: def s= 12.3 //创建的是一个BigDecimal对象 def f = 12.2f// 创建的是一个...当书写较长的数字时,眼睛很难弄清楚一些数字是如何组合在一起的,例如数值大小超过几千万。甚至数值更大,全部数字混在一起。容易看不明白。...涉及BitInteger和其他整数型参数进行计算的结果将会是BitInteger类型。 byte、char、short、int,BigInteger的混合计算结果将会是BigDecimal类型。...对应的表格如下: byte char short int long BigInteger float double BigDecimal byte int int int int long BigInteger
即使BigDecimal是十进制数字的默认值,在以float或double作为参数类型的方法或闭包中也可以接受此类文字。 小数不能用二进制、八进制或十六进制表示。...强大的二进制运算 byte、char、short和int之间的二进制运算结果是int long和byte、char、short、int的二进制运算结果是long BigInteger和任何其他整数类型的二进制运算结果是...BigInteger BigDecimal和byte、char、short、int、BigInteger的二进制运算结果是BigDecimal float,double和BigDecimal之间的二进制运算结果是...double 两个BigDecimal之间的二进制运算结果是BigDecimal 下表总结了这些规则: byte char short int long BigInteger float double...与Java中不同,在Java中,您必须使用显式方法对这些数字进行运算。
v type IntMap = Map Int algebraic data type Bool类型是代数数据类型的一个典型代表,一个代数类型可以有多个值构造器 data Bool = False|...我们可以在很多地方加上类型约束,这里就是在class Num where 中的a上加上它必须是Eq instance的约束。...它接收一个类型参数(像是Int)从而构造出一个具体的类型。...这有点像函数,也是接收一个值作为参数并回传另一个值。对于类型如何被套用到泛型上,我们看下正式的定义。 像是3,"abc"或者是takeWhile的值都有自己的类型(函数也是值的一种)。...我们可以在ghci中通过:k来获取一个类型的kind: Prelude> :k Int Int :: * *代表这个类型是具体类型。一个具体类型是没有任何类型参数的,值只能属于具体类型。
而且其操作数也必须为BigInteger型。 如:two.add(2)就是一种错误的操作,因为2没有变为BigInteger型。...补充: (1)abs():返回某数字的绝对值.参数可以是float、double、long或int。如果是byte或short类型,那么它们会被强制转换成int类型。...例如参数为9.01时,返回10.0。为-0.1时,返回-0.0。返回比参数大的整数,而且都是双精度类型的。如果参数是整数,则该方法会返回这个参数的双精度型。 (3)floor()返回紧邻的最小整数。...作用与ceil()正好相反,返回的是比参数小的整数,而且都是双精度型。如果参数为整数,则返回这个参数的双精度型。...如果该参数是"非数字"类型(NaN),或者小于零,则返回是NaN。
,所以需要把int(double)类型转换为BigInteger(BigDecimal),用函数BigInteger.valueOf()....BigInter m = new BigInteger(st, base); // st是字符串,base是st的进制....数组定义后必须初始化,如 int[] a = new int[100]; (3) 布尔类型为 boolean,只有true和false二值,在 if (...) / while (...)...等语句的条件中必须为boolean类型。 在C/C++中的 if (n % 2) ... 在Java中无法编译通过。 ...java.lang.Integer类 parseInt(String s, int radix) 使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
大数值 对货币等大值数据进行计算时,int、long、float 和 double 等基本数据类型已经在精度方面不能满足需求了。...BigInteger 提供多种方法,下面列举几个常用的方法: int compareTo(BigInteger val):将当前对象与参数 val 进行比较,方法返回值是 int,如果返回值是 0,则相等...BigDecimal(double val):将 double 转换为BigDecimal对象,参数val是double类型的二进制浮点值准确的十进制表示形式。...BigDecimal 提供多种方法,下面列举几个常用的方法: int compareTo(BigDecimal val):将当前对象与参数 val 进行比较,方法返回值是int,如果返回值是0,则相等;...IDEA 更推荐使用 public BigDecimal setScale(int newScale, RoundingMode roundingMode),而非第二个参数传入的是 int 类型的入参。
一.内置类型 几种常见的类型如下: Int:有界整数,32位机器上的界限是[-2147483648, 2147483647] Integer:无界整数,内置的大数类型,效率不如Int高 Float:单精度浮点数...: no parse 编译器不知道我们想要什么类型,可以手动声明类型给点提示: > read "12" :: Int 12 > read "12" :: Float 12.0 五.自定义类型 代数数据类型...Algebraic Data Type,是指通过代数运算构造出来的数据结构,其中代数运算有两种: sum:逻辑或,例如Maybe类型的可能值之间是逻辑或关系 product:逻辑与,例如元组分量之间是逻辑与的关系...= I Int | D Double 通过逻辑或和逻辑与能造出来任意复杂的数据结构,都可以称为代数数据类型 从地位来看,代数数据类型之于函数式语言,就像代数之于数学,是非常基础的东西。...当然,要求参数也必须是Eq类成员,否则无法自动比较(如果不满足,就会抛个错出来) Show和Read也类似,用来完成字符串与值之间的互相转换: data Mytype = Mytype Int String
@Digits BigInteger, CharSequence, byte, short, int, long 检查带注释的值是否是一个最多包含整数位数和小数位数的数字 @Email BigInteger...可选参数regexp和flags允许指定电子邮件必须匹配的其他正则表达式 @Min BigInteger, CharSequence, byte, short, int, long 检查带注释的值是否大于或等于指定的最小值...与@NotEmpty的区别在于,此约束只能应用于字符序列 @NotEmpty CharSequence,Collection,Map和数组 检查带注释的元素是否不为null或为空 @NotNull 任何类型...@NegativeOrZero BigDecimal,BigInteger,byte,short,int,long 检查元素是不是小于等于0。...@Null 任何类型 检查注释的值是 null @Size CharSequence,Collection,Map和数组 检查带注释的元素的大小是否介于min和之间max(包括) https://docs.jboss.org
regexp和flags参数指定正则规则,必须匹配的其它表达式 CharSequence @Future 检查是否是将来的日期...@Min(value=) 是否大于或等于该值 BigDecimal,BigInteger,byte,short,int,long和原始类型的相应的包装;...检查元素是负数或0 BigDecimal,BigInteger,byte,short,int,long和原始类型的相应的包装; HV额外支持:的任何子类型CharSequence...零值被视为无效 BigDecimal,BigInteger,byte,short,int,long和原始类型的相应的包装; HV额外支持:的任何子类型CharSequence(评估字符序列表示的数值...,BigInteger,byte,short,int,long和原始类型的相应的包装; HV额外支持:的任何子类型CharSequence(评估字符序列表示的数值),Number和的任何子类型javax.money.MonetaryAmount
byte char short int long BigInteger float double BigDecimal byte int int int int long BigInteger double...double BigDecimal char int int int long BigInteger double double BigDecimal short int int long BigInteger...double double BigDecimal int int long BigInteger double double BigDecimal long long BigInteger...double double BigDecimal BigInteger BigInteger double double BigDecimal float double double...但如果调用一个使用带有String参数的枚举的方法,则仍必须使用as作为强制: assert switchState('up' as State) == State.down assert switchState
Java ArrayList 目录 Java ArrayList 添加元素 实例 访问元素 实例 修改元素 实例 删除元素 实例 计算大小 实例 迭代数组列表 实例 实例 其他的引用类型 实例 ArrayList...ArrayList 是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。...ArrayList 中的元素实际上是对象,在以上实例中,数组列表元素都是字符串 String 类型。...基本类型对应的包装类表如下: 基本类型 引用类型 boolean Boolean byte Byte short Short int Integer long Long float Float double...Double char Character 此外,BigInteger、BigDecimal 用于高精度的运算,BigInteger 支持任意精度的整数,也是引用类型,但它们没有相对应的基本类型。
) round(float)Systemexit(int status)当status==0时正常停止,非零异常停止arraycopy(ArrayList a,index,arr,index,count...,改变其中一个的数据,另外一个也会改变(地址) 深克隆:基本数据类型拷贝过来,字符串复用,引用数据类型重新创建新的(可以重写克隆方法实现深克隆,或者是用第三方包方法进行深克隆) object...BigInteger(int num,Random rnd);取随机大的整数[0~2^num-1] BigInteger(String val);字符串中必须为整数 BigInteger(String...val,int radix);获取指定进制的大整数(比如[22,2]==>其中22是二进制数) BigInteger b = BigInteger.valueOf(100); valueOf(long...SimpleDateFormat("yyyy年MM月dd日"); String str2 = sdf2.format(date1); System.out.println(str2)lambda表达式使用lambda的对象必须是函数接口类型
//返回两个大整数的商 double doubleValue() //返回大整数的double类型的值 float floatValue() //返回大整数的float类型的值 BigInteger...BigInteger not()// 返回当前大整数的非 BigInteger or(BigInteger val) //返回两个大整数的按位或 BigInteger pow(int exponent...n) //将当前大整数左移n位后返回 BigInteger rightShift(int n)// 将当前大整数右移n位后返回 BigInteger subtract(BigInteger val)/...BigInteger xor(BigInteger val)// 返回两个大整数的异或 BigInteger compareTo(BigInteger )//如果指定的数与参数相等返回0。...如果指定的数小于参数返回 -1如果指定的数大于参数返回 1。
的 ”+“ add(), "-"subtract,"*" multiply,"/" divideBigInteger 是引用数据类型,不是基本数据类型,是不可以直接使用 "+.-.*./" 这些算术运算符的...multiply(BigInteger val)/ 除public BigInteger divide(BigInteger val)注意所传的参数 BigInteger 类型的才行的,以及是加减乘除后...因为 无论是 Float 类 还是 Dobule 类都存在精度问题。...如果必须执行舍入,以生成具有指定标度的结果,则应用指定的舍入模式。 参数:divisor - 此 BigDecimal 要除以的值。scale - 要返回的 BigDecimal 商的标度。...无论是 : BigDecimal 还是 BigInteger 都是引用类型,不是基本数据类型,对于 ”加减乘除“ 运算符,都不可以直接运算,而是通过 对于的方法进行了。”
在公共API的方法参数或方法返回类型中,省略类型通常被认为是一种不好的做法。...虽然在局部变量中使用def并不是一个真正的问题,因为变量的可见性仅限于方法本身,但在方法参数上设置def时,def将在方法签名中转换为Object,这使得用户很难知道哪种类型的参数是期望的类型。...int sum(int x, int y) { x+y } } 在第一种情况下,所有方法、属性、字段、内部类… 注释类的类型将被检查,而在第二种情况下,只有方法和它包含的潜在闭包或匿名内部类将被类型检查...,在类型检查模式下,如果满足以下条件,List或Map A可以赋值给类型T的变量: 赋值是一个变量声明,A是一个List,T有一个构造函数,其参数与List的元素类型匹配。...解析通过名称和参数工作。返回类型与方法选择无关。参数类型与以下规则中的参数类型匹配: 类型A的参数o可以用于类型T的参数,当且仅当: T 等于A。 或者T是一个String,A是一个GString。
1)字符类型:char varchar text blob char:定长 varchar:可变长度 2)数值类型:int bigint float decimal...int: int/integer bigint: long/BigInteger float: 成绩,不适合存储货币类型 decimal: 适用于存储货币类型 ...语法:CREATE TABLE 表名称( 列名称 数据类型 Primary Key, ..... ); 1.2 外键约束(FOREIGN KEY) 拿来主义...外键名称 数据类型, FOREIGN KEY(外键名称) REFERENCES 主表名称(主键名称), ... ); 1.3 非空值约束(NOT NULL)...语法:CREATE TABLE 表名称( 列名称 数据类型 NOT NULL, ... ); 1.4 唯一约束(UNIQUE)
,也不属于基本数据类型,默认值为 null 为了支持大数据的计算,还提供了BigInteger 和 BigDecimal 所以说常用到的,基础性的数据类型有: 8种基本数据类型byte short... int long float double char boolean 8种基本数据类型对应的包装类Byte Short ...Integer Long Float Double Character Boolean java.lang.String java.math.BigInteger ...Number是对"数值"这两个字的概念在Java中的抽象Byte、Short、Integer、Long、Double、Float、BigDecimal、BigInteger 类的超类 规定了作为数值的协议... 就是提供xxxValue方法以获得各种不同的数据类型的值在类型转换之间可能会损失精度 除了byte和short 上图方法列表中的其他的方法 是必须提供的 共性特点 比较 11
val) 将 BigInteger 转换为 BigDecimal BigDecimal(BigInteger unscaledVal,int scale) 将 BigInteger 非标度值和 int...n) 求n次幂 准确计算该幂,使其具有无限精度 参数 n 必须在 0 到 999999999(包括)之间 ZERO.pow(0) 返回...版本也是会借助于缓存的所以优先于构造方法 valueOf(double val)使用 Double.toString(double) 方法转换 double 为字符串并且 调用构造方法此方法并没有涉及到缓存回头看下上面说的String参数类型的构造方法...String参数类型的构造方法---与 Float.toString(float) 和 Double.toString(double) 返回的值兼容这个valueOf借助的就是toString方法这个版本...是一个转换器,将参数的BigDecimal转换为指定标度的值 值本身不会变化,变化的是形式 返回的是一个新的BigDecimal,不过这个新的BigDecimal并不一定是新创建的 可能是使用缓存
领取专属 10元无门槛券
手把手带您无忧上云