楼主: rd小豆芽
2904 3

[数据管理求助] stata中如何把小数格式的数转化成分数格式的数 [推广有奖]

  • 0关注
  • 0粉丝

初中生

23%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
543 点
帖子
3
精华
0
在线时间
20 小时
注册时间
2013-4-23
最后登录
2016-2-23

楼主
rd小豆芽 发表于 2014-1-10 11:24:15 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
stata中如何把小数格式的数转化成分数格式的数
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 如何

沙发
jjjj6666 发表于 2014-1-11 07:50:49
There is no numerical type in percentage, you have to use string as

gen y = string(100 * x, "%10.4f") + "%"

藤椅
fatherberry 发表于 2014-1-11 10:05:59
jjjj6666 发表于 2014-1-11 07:50
There is no numerical type in percentage, you have to use string as

gen y = string(100 * x, "%10. ...
貌似仅仅是把数值扩大了100倍,然后加了个百分号,不能满足楼主的需求吧。。。

板凳
jjjj6666 发表于 2014-1-12 01:32:18
How about a brute force attack, which may be slow depending on the precision

cap prog drop d2f2
prog d2f2
        args f precision

        tempname df num den
   
  sca `num' = 1
  sca `den' = 1
   
  sca `df' = `num'/`den'
  while abs(`df'-`f') > `precision' {
                if (`df' < `f') {
                        sca `num' = `num' + 1
                }
                else {
                        sca `den' = `den' + 1
                        sca `num' = int(`f' * `den')
                }
                sca `df' = `num' / `den'
        }
        sca num = `num'
        sca den = `den'
end

qui {
        sca x=-3.14159265358979
        sca absx = abs(x)
        sca intg = int(x)
        sca frac = abs(abs(x)-int(abs(x)))
        sca num = 0
        sca den = 0
        d2f2 frac 1e-7
        local xx = x
        local numm = num
        local denn = den
        local intgg = intg
        if intg != 0 {
                noi di as text "`xx' = `intgg' `numm'/`denn'"
        }
        else {
                noi di as text "`xx' = `numm'/`denn'"
        }
       
}

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-22 14:11