Java 和Oracle的数据类型

Posted 不痴不立

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 和Oracle的数据类型相关的知识,希望对你有一定的参考价值。

一、BigDecimal

BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。

如果为零或正数,则标度是小数点后的位数。

如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。

setScale(int n, roundingMode)方法

直接删除多余的小数位,如2.35会变成2.3 setScale(1,BigDecimal.ROUND_DOWN) 
进位处理,2.35变成2.4  setScale(1,BigDecimal.ROUND_UP) 
四舍五入,2.35变成2.4  setScale(1,BigDecimal.ROUND_HALF_UP) 
四舍五入,2.35变成2.3,如果是5则向下舍setScaler(1,BigDecimal.ROUND_HALF_DOWN) 

 

浮点数没有办法是用二进制进行精确表示

CPU表示浮点数由两个部分组成:指数和尾数,这样的表示方法一般都会失去一定的精确度,有些浮点数运算也会产生一定的误差

java的float只能用来进行科学计算或工程计算,如果需要精确计算,非要用String来够造BigDecimal不可

在大多数的商业计算中,一般采用java.math.BigDecimal类来进行精确计算

1  BigDecimal b1 = new BigDecimal(Double.toString(0.48));
2  BigDecimal b2 = BigDecimal.valueOf(0.48);

二、char, byteByte的区别

char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 ); 大小范围 是0--65535; 可以表示一个整数,不能表示负数

char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 

byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 

1、char可以表中文字符,byte不可以

1 char e1 = ‘中‘, e2 = ‘国‘;
2 byte f = (byte) ‘中‘; // 必须强制转换否则报错
3 System.out.println(e1);
4 System.out.println(e2);
5 System.out.println(f); // 输出45?

2、char、byte、int对于英文字符,可以相互转化

1 byte g = ‘b‘; // b对应ASCII是98
2 char h = (char) g;
3 char i = 85; // U对应ASCII是85
4 int j = ‘h‘; // h对应ASCII是104
5 System.out.println(g);     //98
6 System.out.println(h);     //b
7 System.out.println(i);      //U
8 System.out.println(j);      //104

 

 

 

以上是关于Java 和Oracle的数据类型的主要内容,如果未能解决你的问题,请参考以下文章

oracle中数据类型对应java类型

oracle中数据类型对应java类型

Oracle数据库中的大对象(LOB)数据类型介绍

将excel中数据用JAVA代码导入到oracle中,遇到日期类型应该怎么处理!?

Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段

如何在 Toad for Oracle 中使用自定义代码片段?