24小时热门版块排行榜    

查看: 869  |  回复: 11

mkluowen

铜虫 (小有名气)

[求助] 数据输出

运行结果用data 格式输出后,—1到1之间的数,小数点前的零不显示,比如-0.144输出后显示为-.144,怎么解决啊,还有,怎么规定每个数据占据的长度。
Write #2, natom, namol + 1, 1, qc, cc1x(ix), cc1y(iy), cc1z(iz),输出后的数据一个挨一个的。
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

ausir

木虫 (正式写手)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
mkluowen: 金币+2, 感谢参与 2013-05-09 09:50:29
jjdg: 编辑内容 2013-05-10 01:29
在 Excel 中新建一个空白文件,然后插入用户模块。在用户模块中,用下面的例子试验即可。
CODE:
Sub test()
Dim a, b, c, d
Open "d:\test\test.dat" For Output As #1
a = 1.005
b = 0.123
c = -1.03
d = -0.523
Write #1, Format(a, "#.###") & Chr(9) & Format(b, "##.###") & Chr(9) & Format(c, "#.###") & Chr(9) & Format(d, "#.###")
Close #1
End Sub

结果如下: test.dat 文件的内容。注意:用Write 写的有双引号。
"1.005        .123        -1.03        -.523"
这个应该可以满足要求。如果使用Print 语句,可能会更加方便些。

[ Last edited by jjdg on 2013-5-10 at 01:29 ]
2楼2013-05-07 19:14:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ausir

木虫 (正式写手)

【答案】应助回帖

★ ★ ★
mkluowen: 金币+3, 有帮助 2013-05-16 18:14:26
引用回帖:
4楼: Originally posted by mkluowen at 2013-05-09 09:48:16
我要的是输出的—0.523,不是-.523...

把“#.###" 修改为 "0.000"即可。结果如下:
"1.005        0.123        -1.030        -0.523"
7楼2013-05-09 20:43:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

deephill

铁杆木虫 (职业作家)


jjdg: 金币+1, 感谢参与 2013-05-17 00:42:20
我发现我错了,我可能是处理字符串太多了,老是往字符串上想。
数字和字符串的存放是不一样的,这个我也不太懂。
8楼2013-05-16 21:36:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

deephill

铁杆木虫 (职业作家)

ausir的 方法也是存储为字符串。
搂主在是要以什么方式存放,以文本存放的话,ausir的 方法 完全满足你的要求。若是以二进制方法可能就要改改程序。还有存放后又如何读取,也要考虑。
9楼2013-05-16 21:47:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

deephill

铁杆木虫 (职业作家)

引用回帖:
10楼: Originally posted by mkluowen at 2013-05-18 08:56:24
以文本存放,读取是用其他软件读取。但是我感觉用字符串的形式估计无法读取。...

你用什么的方式存放,再用什么方式读取,就是一个转换问题。
vb中用str()将数字转为字符串; val()正好相反。
11楼2013-05-18 17:34:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

deephill

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
mkluowen: 金币+2 2013-05-09 09:50:52
我觉得比较直接的方式是把每个数据 用str()函数转成字符串,然后把长度不够的字符串在后面,补零 用&“0”,这样长度一致全搞定。
最后用replace函数把-0.换成-.  就可以写入文件了。
3楼2013-05-08 21:14:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mkluowen

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by ausir at 2013-05-07 19:14:10
在 Excel 中新建一个空白文件,然后插入用户模块。在用户模块中,用下面的例子试验即可。
Sub test()
Dim a, b, c, d
Open "d:\test\test.dat" For Output As #1
a = 1.005
b = 0.123
c = -1.03
d ...

我要的是输出的—0.523,不是-.523
4楼2013-05-09 09:48:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mkluowen

铜虫 (小有名气)

引用回帖:
3楼: Originally posted by deephill at 2013-05-08 21:14:19
我觉得比较直接的方式是把每个数据 用str()函数转成字符串,然后把长度不够的字符串在后面,补零 用&“0”,这样长度一致全搞定。
最后用replace函数把-0.换成-.  就可以写入文件了。

我是新手,没有看得太明白,能举一个简单的例子吗?
5楼2013-05-09 09:49:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shyboylpf

新虫 (初入文坛)

我知道用C\C++怎么写。哈哈
6楼2013-05-09 20:15:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mkluowen

铜虫 (小有名气)

引用回帖:
9楼: Originally posted by deephill at 2013-05-16 21:47:17
ausir的 方法也是存储为字符串。
搂主在是要以什么方式存放,以文本存放的话,ausir的 方法 完全满足你的要求。若是以二进制方法可能就要改改程序。还有存放后又如何读取,也要考虑。

以文本存放,读取是用其他软件读取。但是我感觉用字符串的形式估计无法读取。
10楼2013-05-18 08:56:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 mkluowen 的主题更新
信息提示
请填处理意见