salary

本文介绍了一个简单的C++程序,用于输入薪资数据、进行薪资上调、排序并最终输出调整后的薪资列表。涉及基本的数据输入输出操作、数组处理及冒泡排序算法。
 Salary.h
class Salary
{
public:
	void cin_salary ();
	void up_salary ();
	void rsalary ();
	void cout_salary();
private:
	double salary[50];
	int number ;
};


原文件

T41.cpp

#include <iostream>
#include "Salary.h"
using namespace std;
int main()
{
	Salary sal;
	sal.cin_salary();
	sal.up_salary();
	sal.rsalary();
	sal.cout_salary();
	system("PAUSE");
	return 0;
}


资源文件

T42.cpp

#include <iostream>
#include "Salary.h"
using namespace std;
void Salary::cin_salary()
{
	int i=0;
	cout<<"请输入数据"<<endl;
	for (i=0;i<=50;i++)
	{
		cin>>salary[i];
		if (salary[i]==-1)
			break;
	}
	i--;
	number=i;
}
void Salary::up_salary()
{
	int i=0;
	for(i=0;i<=number;i++)
	{
		salary[i]=salary[i]+100;
	}
}
void Salary::rsalary()
{
	 int j,i;
	 double t;

       j=0,i=0;

       for(j=0;j<number;j++)

              for (i=0;i<number-1;i++)
			  {

                     if(salary[i]<salary[i+1])

                     {

                            t=salary[i];

                            salary[i]=salary[i+1];

							salary[i+1]=t;

                     }
			  }
}



void Salary::cout_salary()
{
	int i=0;
	for (i=0;i<=number;i++)
	{
		cout<<salary[i]<<'\t';
	}
}
	


### 关于 Salary 数据类型的 FLOAT 使用及相关问题 在编程中,`salary` 常被定义为 `FLOAT` 类型来存储员工薪资信息。然而,在实际应用中需要注意一些潜在的问题和最佳实践。 #### 1. 浮点数精度问题 浮点数(`FLOAT` 或者 `REAL`)由于其内部表示方式可能会引入舍入误差。这意味着即使简单的加减运算也可能导致不精确的结果[^3]。例如: ```python salary = 79800.12 bonus = 1500.45 total_salary = salary + bonus print(total_salary) # 可能会显示类似于 81300.569999 的结果 ``` 因此,当涉及到货币计算时,推荐使用固定精度的小数类型如 Oracle 中的 `NUMBER(p,s)` 来代替 `FLOAT`[^4]。 #### 2. 替代方案 - 使用 NUMBER 类型 Oracle 提供了更合适的数值类型 `NUMBER`,它允许指定总位数 (`p`) 和小数部分位数 (`s`)。这有助于避免因浮点数带来的精度损失。对于工资字段来说,通常建议设置足够的范围以适应最高可能值以及合理的小数位数。比如: ```sql CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(100), salary NUMBER(10,2) -- 总共十位数字,其中两位用于小数部分 ); ``` 这里 `(10,2)` 表示该列最多可容纳九千九百九十九万九千九百九十九元九十美分这样的金额[^5]。 #### 3. 对象导向设计中的注意事项 如果考虑面向对象程序设计(OOP),则需注意分享的重要性与否会影响我们如何处理像薪水这样敏感的数据项。按照前面提到的原则,“从摇篮到坟墓”的限制意味着如果我们完全控制数据生命周期的话适合采用OOP方法;但如果存在多个系统间共享需求,则应谨慎对待是否运用纯正的OOP理念[^2]。 #### 结论 尽管可以在某些场景下将 `salary` 定义成 `FLOAT` 类型,但从长远来看为了保障财务数据准确性还是应该优先选用支持高精算术操作的数据结构——即 Oracle 数据库里的 `NUMBER` 类型更为合适。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值