楼主: jzhyue
4430 6

[其他] [疑问求助]:关于数值的显示、运算与精确度 [推广有奖]

  • 2关注
  • 3粉丝

副教授

34%

还不是VIP/贵宾

-

威望
0
论坛币
410 个
通用积分
450.8068
学术水平
60 点
热心指数
59 点
信用等级
48 点
经验
10631 点
帖子
455
精华
0
在线时间
1109 小时
注册时间
2005-12-31
最后登录
2024-2-24

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
在下想合成一类如身份证号的数值,碰到如下问题:如下图,gen no=x1*10000+x2+x1(A图),B图是excel计算出的相同公式计算出的p_no(我想达到的目的),我想这是计算精确度导致的,不知有什么解决办法?
我在DATA  editor 中输入 123456789.089,显示的结果是123456792.0000,也没有办法理解的。

另:我输入身份证号:413902197604037139,显示的却是413902184384561150,不知何故。
因此,请问老师们,身份证号这类数据用什么类型的来表示比较合理?数值型还是字符?先谢谢了。图显示不出来,上传到附件中
计算对比.PNG
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:精确度 editor EXCEL 身份证号 exce 身份证号 excel

沙发
sungmoo 发表于 2010-5-7 21:40:52 |只看作者 |坛友微信交流群
jzhyue 发表于 2010-5-7 20:41 身份证号这类数据用什么类型的来表示比较合理?数值型还是字符?
第二代身份证号末尾可能有x,这样还是设成字符型吧。

使用道具

藤椅
voodoo 发表于 2010-5-7 22:01:10 |只看作者 |坛友微信交流群
只能存成字符型。
help double,你将看到“If you are storing identification numbers, the rounding could matter.  If the identification numbers are integers and take 9 digits or less, store them as longs; otherwise, store them as doubles.  doubles have 16 digits of accuracy.”
巫毒上传,必属佳品!
坛友下载,三思后行!

使用道具

板凳
jzhyue 发表于 2010-5-7 22:22:28 |只看作者 |坛友微信交流群
原来也是采用字符的,后来感觉不便才决定改变数据结构的,我的数据类似身份证号码,结构为No=年月+四位代码+追加码(由于追加码不确定是两位还是一位,选用小数表示,即.xx或.x表示)如200912 5678 .6和2010036578.19
但这类数值在stata中却不能如实显示的,还请版主释疑。谢谢!

使用道具

报纸
jzhyue 发表于 2010-5-7 22:37:20 |只看作者 |坛友微信交流群
voodoo 发表于 2010-5-7 22:01
只能存成字符型。
help double,你将看到“If you are storing identification numbers, the rounding could matter.  If the identification numbers are integers and take 9 digits or less, store them as longs; otherwise, store them as doubles.  doubles have 16 digits of accuracy.”
由此看来如果用数字表示id,只能用少于9位的integer,更大的是无法用数字表示啦。
通过阅读  help double 。感觉标识码最好还是不要用数值表示的好。用字符表达是个好选择。
谢谢voodoo!

使用道具

地板
sungmoo 发表于 2010-5-8 07:34:41 |只看作者 |坛友微信交流群
jzhyue 发表于 2010-5-7 22:37 由此看来如果用数字表示id,只能用少于9位的integer,更大的是无法用数字表示啦。
通过阅读  help double 。感觉标识码最好还是不要用数值表示的好。用字符表达是个好选择。
个人以为,这里的关键还是号码末尾可能存在"x"。

如果ID号都是纯数字,完全可以把ID分成两个数值型变量,以两个变量来标识一个个体。

(当然,也可以用一个数值型变量与一个字符型变量来标识一个个体)

使用道具

7
jzhyue 发表于 2010-5-8 20:14:22 |只看作者 |坛友微信交流群
sungmoo 发表于 2010-5-8 07:34
jzhyue 发表于 2010-5-7 22:37 由此看来如果用数字表示id,只能用少于9位的integer,更大的是无法用数字表示啦。
通过阅读  help double 。感觉标识码最好还是不要用数值表示的好。用字符表达是个好选择。
如果ID号都是纯数字,完全可以把ID分成两个数值型变量,以两个变量来标识一个个体。

(当然,也可以用一个数值型变量与一个字符型变量来标识一个个体)
分成两个变量来标识一个个体!也是个好办法。谢谢

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 02:47