Stata 取消对18位数字的排序返回舍入错误
我有长度为18的ID作为字符串,我想把它们转换成一个数值变量。 我尝试了以下代码:Stata 取消对18位数字的排序返回舍入错误,stata,Stata,我有长度为18的ID作为字符串,我想把它们转换成一个数值变量。 我尝试了以下代码: destring var, replace 以数字格式返回变量的。但是,ID的最后一位包含舍入错误。例如:12345678123456000-->12345678123456001 我怎样才能在ID没有任何变化的情况下销毁我的值呢?我无法重现,如下所示: . clear . set obs 1 number of observations (_N) was 0, now 1 . gen test = &qu
destring var, replace
以数字格式返回变量的。但是,ID的最后一位包含舍入错误。例如:12345678123456000-->12345678123456001
我怎样才能在ID没有任何变化的情况下销毁我的值呢?我无法重现,如下所示:
. clear
. set obs 1
number of observations (_N) was 0, now 1
. gen test = "123456789123456000"
. destring, gen(check)
test: all characters numeric; check generated as double
. l
+--------------------------------+
| test check |
|--------------------------------|
1. | 123456789123456000 1.235e+17 |
+--------------------------------+
. format check %23.0f
. l
+-----------------------------------------+
| test check |
|-----------------------------------------|
1. | 123456789123456000 123456789123456000 |
+-----------------------------------------+
另一种方法会产生错误,因为字符串“123456789123456001”映射到123456789123456000。本质上,您遇到的是可以精确保存在每个数字有8个字节的
double
中的内容。为什么要对标识符进行算术运算?应该有直接的方法使用字符串函数操作标识符。