C 在双精度模式中从右侧(最右侧)切换第2位和第4位
我的问题和这里的问题差不多: 不同的是,我想从右边切换第二位和第四位,而不是像另一个问题中那样切换左边。所以在我的例子中最右边的数字是1。 示例:283926.67变为282936.67。 如何编写此代码C 在双精度模式中从右侧(最右侧)切换第2位和第4位,c,C,我的问题和这里的问题差不多: 不同的是,我想从右边切换第二位和第四位,而不是像另一个问题中那样切换左边。所以在我的例子中最右边的数字是1。 示例:283926.67变为282936.67。 如何编写此代码 #include <stdio.h> #include <stdlib.h> int main() { double number; printf("Give a number: "); scanf("%lf", &number
#include <stdio.h>
#include <stdlib.h>
int main() {
double number;
printf("Give a number: ");
scanf("%lf", &number);
//printf("%.4f", number);
char arr[sizeof(number)];
snprintf(arr, sizeof(number) + 1, "%f", number);
char ex = arr[1];
arr[1] = arr[3];
arr[3] = ex;
number = atof(arr);
printf("%.4f\n", number);
return 0;
}
#包括
#包括
int main(){
双数;
printf(“给出一个数字:”);
scanf(“%lf”和编号);
//printf(“%.4f”,数字);
字符arr[sizeof(number)];
snprintf(arr,sizeof(number)+1,“%f”,number);
char ex=arr[1];
arr[1]=arr[3];
arr[3]=ex;
编号=atof(arr);
printf(“%.4f\n”,数字);
返回0;
}
你只需做与你给出的链接完全相同的事情:
int main() {
double A = 282936.67;
char str[50];
sprintf(str, "%f", A);
int dot = -1, i = 0;
//Finds the dot position
while (i != 50) {
if (str[i] == '.') {
dot = i;
break;
}
i++;
}
if (dot >= 4) {
char tmp = str[dot - 2];//Search from the dot position
str[dot - 2] = str[dot - 4];
str[dot - 4] = tmp;
}
//Convert your string to a float
A = atof(str);
printf("%.2f", A);
while (1);
return 0;
}
可能是@TheoPnv的副本你看我写的怎么样?欢迎来到Stack Overflow!请展示您迄今为止的研究/调试工作。请先阅读第页。@SouravGhosh添加了我的代码:)@Sullivan将问题标记为重复问题是正常的,即使你提到了它。尽量不要对做节制的人说严厉的话:)谢谢你的回答,if语句中到底发生了什么?哪一个?第一个检查是否在某处找到了点,第二个检查点是否位于足够远的位置,以获取
dot-4
字符,否则在检查str[dot-4]时会出现异常
哦,我明白了,为什么int-dot的值是-1?dot
可以用4以下的任何值初始化,而不改变实际程序中的任何内容,我只是把-1
放进去,以清楚地表明如果数组中没有点,它的结果不会指向错误的值