gpt4 book ai didi

c - 是什么导致数组中的 float 舍入?

转载 作者:行者123 更新时间:2023-11-30 18:38:51 26 4
gpt4 key购买 nike

我编写了这个程序,使用冒泡排序算法对 C 中的 float 组进行排序。

    /* This program will sort floating point numbers in an array */

#include<stdio.h>
#include<stdlib.h>

int main()
{
float fl_array[] = {12.35f, 14.05f, 9.85f, 14.34f, 2.58f, 36.6f};
int array_length = sizeof(fl_array)/sizeof(fl_array[0]);

//printing the unsorted array
int print_counter = 0;
printf("Printing the unsorted array\n");
do{
printf("%.2f ", fl_array[print_counter]);
print_counter ++;
} while(print_counter < array_length);
printf("\n");

printf("***** Sorting Begins *********\n");

//declaration of variables for sorting
int i, j, temp_loc;
for(i=0; i<array_length; ++i)
{
for(j=i + 1; j<array_length; ++j)
{
if(fl_array[i] > fl_array[j])
{
temp_loc = fl_array[i];
fl_array[i] = fl_array[j];
fl_array[j]= temp_loc;
}
}
}

//end of bubble sort
//prnting the sorted array

print_counter = 0;
printf("Printing the sorted array\n");
do{
printf("%.2f ", fl_array[print_counter]);
print_counter ++;
} while(print_counter < array_length);
printf("\n");

return 0;
}

程序产生的输出为:

Printing the unsorted array
12.35 14.05 9.85 14.34 2.58 36.60
***** Sorting Begins *********
Printing the sorted array
2.58 9.00 12.00 14.00 14.00 36.60

我读过很多关于此的文章,我知道 float 不能直接处理,它们可以转换为 double 并作为 double 值进行比较。但问题是该程序可以应用什么技术来显示 float 及其精度值?

最佳答案

您的问题是 temp_loc 变量。它是一个int,因此为其分配一个 float 会将其转换为整数。将其类型更改为 float:

float temp_loc;

关于c - 是什么导致数组中的 float 舍入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32219215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com