在Stata中创建变量时出现奇怪的错误?

在Stata中创建变量时出现奇怪的错误?,stata,Stata,我不知道这是怎么在斯塔塔发生的。数据是不缺少值的整数 gen aid=bid*10000+cid gen temp=0 replace temp=1 if aid!=bid*10000+cid sum temp temp的平均值等于0.27,我可以看到很多地方变量aid没有按照公式进行编码。这怎么可能?我试着在Stata 12和Stata 13中运行它,得到了相同的结果。在所有出现错误的情况下,aid在1位或2位处关闭 以下是一个可复制的示例: set obs 1 gen wid=2107

我不知道这是怎么在斯塔塔发生的。数据是不缺少值的整数

gen aid=bid*10000+cid
gen temp=0
replace temp=1 if aid!=bid*10000+cid
sum temp
temp
的平均值等于0.27,我可以看到很多地方变量
aid
没有按照公式进行编码。这怎么可能?我试着在Stata 12和Stata 13中运行它,得到了相同的结果。在所有出现错误的情况下,
aid
在1位或2位处关闭


以下是一个可复制的示例:

set obs 1

gen wid=2107 
gen fid=2104 

gen mid=fid*10000+wid 
di mid
例如:

clear 
set more off

set obs 1

gen wid=2107 
gen fid=2104 

gen mid = fid*10000 + wid 
gen double mid2 = fid*10000 + wid 

display mid
display mid2
默认的数据类型是float,“float大约有7位精度”


如果提高数据类型的精度,则会看到预期的结果。阅读我在前面的评论中提供的参考:
帮助数据类型
和其中的参考。

看起来像是精度问题,但您没有提供足够的信息。请发布一个可复制的示例。请参见
帮助数据类型
帮助浮动
。这里有一个可复制的示例:
gen wid=2107
gen fid=2104
gen mid=fid*10000+wid
di mid
21042108这对我来说似乎不是一个精度问题。这些数字只有8位,它们在1位上有所不同。谢谢修复!我想知道有多少次我在不知道的情况下得到了错误的答案。我从未意识到整数的加法如此困难。好消息是,这些细节通常对实际结果影响不大。毕竟,对于测量的变量,您也可以使用
double
s而不是
float
s,但您通常不会注意到任何科学结果。但是,如果使用大整数作为标识符,可能会出现奇怪的错误,这似乎就是您在这里所做的。标识符通常最好作为字符串保存。