int number

建表的时候,如果是浮点数,一般设置为 number(m,n )[m为精度,n为小数位数,所以整数为m-n位], 整数设置为integer;

比如:

create table abc
( a number(38,0),
b number(38)
c integer,
d number
)

那么a,b,c,d 分别有什么区别呢?
a,b其实是一样的,都是38位的范围;
c是不是和a,b一样呢?测试后是不一样的,c的最大值可以达到9e125,显然远远地大于38位的范围;
d和a,b,c有什么区别呢,首先d可以放小数,另外它的范围同样远远大于38位;

具体这a,b,c,d四种类型的明确差异,我也说不清楚,希望有专家把它解释清楚,我这里只是抛砖引玉。


以前我一直以为 integer=number(38,0) --38是number的最大精度

刚才无意中发现integer 是个超大的数据类型,最大可以表示为power(10,126)-1
也就是说这么大的数字,大概需要多少个字节呢,

因为一个字节最大表示256,那么N个字节最大表示power(256,n)>=power(10,126)

现在求这个N:解法是:
select LOG(256,10)*126 from dual
求得的解是 53, 也就是说,一个integer类型最少使用53个字节。


所以我觉得Integer类型还是尽量少用,一般很少用到这么大的数字;


特别是某些人对于boolean类型的处理;

因为Oracle的表结构中没有布尔类型,所以很多人干脆用integer 代替布尔类型,这个感觉有点“奢侈”;

我一般都用char(1)表示布尔型;'0'表示false,'1'表示true


另外,比如varchar2(200)这个类型,它是动态分配的,所以字符串按实际使用的占用空间,但是integer却是固定暂用了最少53个字节,所以大部分时候,integer 类型还是不用为妙;

就算在pl/sql 里;
定义变量的时候,也不要使用integer;
可以用binary_integer 或pls_integer ;11g里还出了个新的整形,效率更高,叫simple_integer,反正最好不用integer就是了。

效率测试下来:[color=red]simple_integer>pls_integer>binary_integer>integer;[/color]
你提到的代码片段: ```cpp int number, power; ``` 这是 C++ 中的一条**变量声明语句**,用于定义两个整型变量:`number` `power`。下面我们详细解释这条语句的含义、作用以及在程序中的常见用途。 --- ### ✅ 含义解析 ```cpp int number, power; ``` - `int`:表示数据类型为“整数”(integer),通常占 4 字节(32 位),范围大约是 -2,147,483,648 到 2,147,483,647。 - `number` `power`:是你定义的两个变量名。 - 这一行同时声明了两个变量,用逗号 `,` 分隔。 等价于分开写: ```cpp int number; int power; ``` 但合并写法更简洁。 --- ### 🧩 常见使用场景(如在幂运算中) 这条语句常出现在需要用户输入底数指数的程序中,例如计算 $ \text{number}^{\text{power}} $: ```cpp #include <iostream> using namespace std; int main() { int number, power; // 声明两个整数变量 cout << "Enter a number: "; cin >> number; // 用户输入底数 cout << "To what power? "; cin >> power; // 用户输入指数 cout << number << " raised to " << power << " is "; // 接下来可以调用递归函数计算幂 return 0; } ``` --- ### ⚠️ 注意事项 | 问题 | 说明 | |------|------| | **未初始化** | `int number, power;` 只是声明,不赋初值 → 变量值是随机的(垃圾值)<br>建议初始化:`int number = 0, power = 0;` | | **作用域** | 在函数内声明的是局部变量,只能在该函数中使用 | | **命名清晰** | `number` `power` 是合理的命名,比 `a`, `b` 更易读 | --- ### 💡 提升建议:增加输入校验 由于 `power` 是指数,如果是负数或过大,可能导致溢出或错误,建议加入判断: ```cpp if (power < 0) { cout << "Error: This program only supports non-negative exponents." << endl; return 1; } ``` 或者使用循环确保输入合法: ```cpp while (power < 0) { cout << "Please enter a non-negative power: "; cin >> power; } ``` --- ### 🔁 数据类型扩展建议 如果要计算较大的幂(如 $ 2^{30} $),`int` 可能不够用,建议升级类型: ```cpp long long number, power; // 更大整数范围 double result; // 支持浮点结果 ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值