使用fscanf从TXT文本文件中读入float类型时候遇到的问题

tsingmei 2004-10-16 12:30:26
所写代码是这样的:
fscanf(pInputFile, "Neuron ID = %d\n", &m_iID);
fscanf(pInputFile, "Neuron LayerID = %d\n", &m_iLayerID);
fscanf(pInputFile, "Num of Input Neurons = %d\n", &m_NumOfInputNeurons);
fscanf(pInputFile, "Bias Value = %f\n", &m_dBiasValue);
fscanf(pInputFile, "BP Error = %f\n", &m_dBPError);
fscanf(pInputFile, "Output Value = %f\n", &m_dOuputValue);
fscanf(pInputFile, "Desired Value = %f\n", &m_dDesiredValue);

TXT文本文件里面的数据是:
Neuron ID = 0
Neuron LayerID = 0
Num of Input Neurons = 0
Bias Value = 0.319629
BP Error = 0.007695
Output Value = -0.329412
Desired Value = -1.000000


但是,读入后,在调试状态的时候,用VC跟,却发现数据是这样的,请问为什么?
m_iID = 0
m_iLayerID = 0
m_NumOfInputNeurons = 0
m_dBiasValue = 0.641264(和文本文件数据严重不符)
m_dBPError = 0.000000(和文本文件数据严重不符)
m_dOutputValue = -1.07374e+008(和文本文件数据严重不符)
m_dDesiredValue = -1.00000
...全文
340 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tsingmei 2004-10-16
  • 打赏
  • 举报
回复
按照UPCC同志提出的想法,还是不行。我用C++的fstream来做,就可以了

我跟踪下面的变量faint,读入的数据就是txt文件中的数值,不知道为什么。


int xx = 0;

float faint;
std::ifstream input_fil("test.txt", std::ios::in | std::ios::binary);
while(! input_fil.eof()){
input_fil >> faint;
xx++;
}


我想我还是用fstream来做好了。但是书放在公司了,现在没法做输出数据的代码。
哪位能帮我用fstream来实现输出的代码?如下:(我会马上给分,结束帖子的。)
fprintf(pOutputFile, "Neuron ID = %d\n", m_iID);
fprintf(pOutputFile, "Neuron LayerID = %d\n", m_iLayerID);
fprintf(pOutputFile, "Num of Input Neurons = %d\n", m_NumOfInputNeurons);
fprintf(pOutputFile, "Bias Value = %.6f\n", m_dBiasValue);
fprintf(pOutputFile, "BP Error = %.6f\n", m_dBPError);
fprintf(pOutputFile, "Output Value = %.6f\n", m_dOuputValue);
fprintf(pOutputFile, "Desired Value = %.6f\n", m_dDesiredValue);

int i = 0;
for( ; i < m_NumOfInputNeurons; ++i)
{
fprintf(pOutputFile, "Input Weight %d = %.6f\n",i, m_VecInputWeights[i]);
}
Dong 2004-10-16
  • 打赏
  • 举报
回复
fscanf(pInputFile, "Bias Value = %.6f\n", &m_dBiasValue);
庄鱼 2004-10-16
  • 打赏
  • 举报
回复
有关精度可以这样:os.precision(6);
庄鱼 2004-10-16
  • 打赏
  • 举报
回复
ofstream os("Out.txt");
os<<"Neuron ID = "<<m_iID<<endl;
其它以此类推。
somedummy 2004-10-16
  • 打赏
  • 举报
回复
好像我没有发现这样的问题嘛,你确定那几个浮点数是用的单精度类型float而不是双精度类型double?如果采用的是double的话,可能会产生这样的问题。

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧