c++ 如何提取有效数值 50
fprintf(fp,"%.1d=%.8f\n",i,x(i));里输出结果x(i)为-1.#QNAN。怎么提取x(i)的有效数值输出呢?x(i)为double类型。...
fprintf(fp,"%.1d=%.8f\n",i,x(i));里输出结果x(i)为-1.#QNAN。怎么提取x(i)的有效数值输出呢?x(i)为double类型。
展开
展开全部
有两种方法可以做到提取数字任意一位。
1 根据数学定义,利用除法和取余来获取。
整型的除法会省略掉小数部分,所以可以除以10的对应位数次幂,来达到将要取的值移动到个位的效果,再用10取余,即可得到对应数字。
比如1234,取其百位数,就可以用1234/100%10=12%10=2从而得到百位数2.
以下函数的功能为将整型正整数反序输出。原理为从低位到高位依次取出数值,并输出。
#include <stdio.h>void reverse_int(int v){ while(v) { printf("%d", v%10);//输出个位。 v/=10; //将下一位数字移动到个位。 }}
2 利用sprintf函数,将整型数字转为字符串,并对字符串进行处理。
sprintf的功能是格式化输出到字符串,操作类似于printf,但输出目标不是标准输出,而是字符数组。
以下函数功能为,将整型正整数按位加空格输出。
#include <stdio.h>void put_int_with_space(int v){ char str[50]; //定义一个足够大的数组。 int i; sprintf(str, "%d", v);//将v转为字符串。 for(i = 0; str[i]; i ++) printf("%c ", str[i]);//将每位后加空格输出。}
1 根据数学定义,利用除法和取余来获取。
整型的除法会省略掉小数部分,所以可以除以10的对应位数次幂,来达到将要取的值移动到个位的效果,再用10取余,即可得到对应数字。
比如1234,取其百位数,就可以用1234/100%10=12%10=2从而得到百位数2.
以下函数的功能为将整型正整数反序输出。原理为从低位到高位依次取出数值,并输出。
#include <stdio.h>void reverse_int(int v){ while(v) { printf("%d", v%10);//输出个位。 v/=10; //将下一位数字移动到个位。 }}
2 利用sprintf函数,将整型数字转为字符串,并对字符串进行处理。
sprintf的功能是格式化输出到字符串,操作类似于printf,但输出目标不是标准输出,而是字符数组。
以下函数功能为,将整型正整数按位加空格输出。
#include <stdio.h>void put_int_with_space(int v){ char str[50]; //定义一个足够大的数组。 int i; sprintf(str, "%d", v);//将v转为字符串。 for(i = 0; str[i]; i ++) printf("%c ", str[i]);//将每位后加空格输出。}
追问
不是啊,我是要把double数组x(i)的有效数值提取出来,有没有比较简单的就像VB的val一样,x(i)=val(x(i))就行
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |