double类型与float类型区别
- 参考:变量的存储格式和显示格式
数值运算出错
- 因为营业总收入和其他业务收入都是字符型数据,所以使用real函数将其转换为数值型数据。
gen 主营业务收入= real(营业总收入)-real(其他业务收入)
- 结果如下图所示:计算出来的主营业务收入是不对的。
- 直接看不出运算是否出问题了,接下来将主营业务收入格式化一下:
转换数值格式
format 主营业务收入* %17.3gc //这里之所以保留17位宽度,是因为营业总收入的字符的格式是17位宽度
- 参考怎么转换科学计数法字符串_Stata数据格式转换
- 显然计算出来的主营业务收入不对。
出现错误数值的原因
- 重新温习double类型与float类型区别;因为计算出来的主营业务收入是float类型,最多显示8位有效数字,而真实的计算结果远高于8位数字。
解决办法
- 扩大变量单位(比如将单位换成万或千万)并保留合适的小数位数。
* 将单位换成亿元,并四舍五入保留四位小数
replace 营业总收入 其他业务收入 = round(`i'/100000000,0.0001)
gen 主营业务收入= round(float(营业总收入)-float(其他业务收入),0.0001)
将字符型类型数字变成数值类型数字
destring 变量名称(可以多个变量同时进行), replace force //将字符串类型的数值变成数值型