总共无法打印为双重
Total wont print as a double
本文关键字:打印 更新时间:2023-10-16
im找到数组的中间位置,但是如果它是一组阵列,则必须找到两个中间数的平均值。我的变量初始化为双重;但这仍然行不通。我尝试了setPrecision,并且正在找到正确的值。
void median (int *pScores, int numScores)
{
insertionSort(pScores, numScores);
int mid = 0;
int midRight = 0;
int midLeft = 0;
double midEven;
//if array is odd
if (numScores % 2 != 0)
{
mid = numScores / 2;
cout << "Middle Position: " << *(pScores + mid) << endl;
}
//if array is even
if (numScores % 2 == 0)
{
midRight = (numScores/2);
midLeft = (numScores/2) - 1;
cout << *(pScores + midRight) << endl;
cout << *(pScores + midLeft) << endl;
midEven = ( *(pScores + midRight) + *(pScores + midLeft) ) / 2;
cout << "Median: "<< setprecision(2) << midEven << endl;
}
}
我尝试将双mideven初始化为双mideven = 0;和双mideven = 0.0;而且我仍然没有小数点。
在C 中,由整数除外的整数仍然是一个整数(实际上,使用两个整数的任何数学操作都会提供一个整数)。因此,您应该先将它们铸造为两倍:
midEven = static_cast<double>( *(pScores + midRight) + *(pScores + midLeft) ) / 2;
或将它们除以2.0,这是双重的。
midEven = ( *(pScores + midRight) + *(pScores + midLeft) ) / 2.0;
但是,两种方法都有一个潜在的问题,即两个分数的总和可能超过整数的极限。因此,如果您认为这可能会发生,那么一种更加谨慎的方法是:
midEven = ( static_cast<double>(pScores[midRight]) + static_cast<double>(pScores[midLeft]) ) / 2;
相关文章:
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 如何在c++中打印目录
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 在线编译器中的分段C++没有打印消息
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 如何将结构插入到集合中并打印集合的成员
- 在循环C++中指定字符串之后,不会打印该字符串
- 以螺旋方式打印矩阵的程序.(工作不好)
- 从控制台中删除最后打印的元素
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 如何仅使用对象名称打印特定于对象的成员
- 回溯C++不打印函数,因此文件
- 在一定长度后从数组中打印时缺少整数
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- 在gem5中打印文件中的所有cache_blocks
- 打印数字图案
- Log4cpp:以UTC/GMT时区打印日期
- 如何使用gdb制作一个可以漂亮地打印每个对象的C++函数