C++如何在数组中存储浮点数
how to store float value in the array in C++
我得到一个整数值作为我的输出,但我希望它是一个浮点数 value.I 我无法找出我的代码中的问题。
这是代码。
#include <iostream>
#include <vector>
#include <bits/stdc++.h>
using std::vector;
using namespace std;
double get_optimal_value(int n, int capacity, vector<int> weights, vector<int> values) {
double value = 0.0,p=0.0;
float max=0.0;
float m=n,i,k,j,t;
// write your code here
vector<double> a(m);
for(i=0;i<m;i++)
{
p=(values[i]/weights[i]);
a.push_back(p);
}
sort(a.begin(), a.end(), greater<double>());
for(j=0;j<m;j++)
{
for(k=0;k<m;k++)
{
if(a[j]==values[k]/weights[k])
{
if(weights[k]<=capacity){
value= value + values[k];
capacity=capacity-weights[k];
if(capacity==0)
{
return value;
}
}else if(weights[k]>capacity){
value=value + a[j]*capacity;
return value;
}
}
}
}
return value;
}
int main() {
int n;
int capacity;
std::cin >> n >> capacity;
vector<int> values(n);
vector<int> weights(n);
for (int i = 0; i < n; i++) {
std::cin >> values[i] >> weights[i];
}
double optimal_value = get_optimal_value(n,capacity, weights, values);
std::cout.precision(10);
std::cout << optimal_value << std::endl;
return 0;
}
输入
1 10
500 30
输出
160
但我希望答案是双精度值或浮点值
和
预期输出为
166.667
你们能帮帮我吗
我查看了您的代码,我很确定 get_optimal_value
只能 return 整数值。例如,行 p=(values[i]/weights[i]);
丢失了一个浮点值。我强烈建议使用调试器来密切关注您的程序并找出问题所在。
在这样的表达式中
p=(values[i]/weights[i]);
或者像这样
if(a[j]==values[k]/weights[k])
右边用的是整数运算
要获得浮点数结果,您应该将其中一个操作数转换为双精度类型,例如
p = static_cast<double>( values[i] ) / weights[i];
或
if ( a[j] == static_cast<double>( values[k] ) / weights[k] )
我得到一个整数值作为我的输出,但我希望它是一个浮点数 value.I 我无法找出我的代码中的问题。 这是代码。
#include <iostream>
#include <vector>
#include <bits/stdc++.h>
using std::vector;
using namespace std;
double get_optimal_value(int n, int capacity, vector<int> weights, vector<int> values) {
double value = 0.0,p=0.0;
float max=0.0;
float m=n,i,k,j,t;
// write your code here
vector<double> a(m);
for(i=0;i<m;i++)
{
p=(values[i]/weights[i]);
a.push_back(p);
}
sort(a.begin(), a.end(), greater<double>());
for(j=0;j<m;j++)
{
for(k=0;k<m;k++)
{
if(a[j]==values[k]/weights[k])
{
if(weights[k]<=capacity){
value= value + values[k];
capacity=capacity-weights[k];
if(capacity==0)
{
return value;
}
}else if(weights[k]>capacity){
value=value + a[j]*capacity;
return value;
}
}
}
}
return value;
}
int main() {
int n;
int capacity;
std::cin >> n >> capacity;
vector<int> values(n);
vector<int> weights(n);
for (int i = 0; i < n; i++) {
std::cin >> values[i] >> weights[i];
}
double optimal_value = get_optimal_value(n,capacity, weights, values);
std::cout.precision(10);
std::cout << optimal_value << std::endl;
return 0;
}
输入
1 10 500 30
输出 160
但我希望答案是双精度值或浮点值 和 预期输出为
166.667
你们能帮帮我吗
我查看了您的代码,我很确定 get_optimal_value
只能 return 整数值。例如,行 p=(values[i]/weights[i]);
丢失了一个浮点值。我强烈建议使用调试器来密切关注您的程序并找出问题所在。
在这样的表达式中
p=(values[i]/weights[i]);
或者像这样
if(a[j]==values[k]/weights[k])
右边用的是整数运算
要获得浮点数结果,您应该将其中一个操作数转换为双精度类型,例如
p = static_cast<double>( values[i] ) / weights[i];
或
if ( a[j] == static_cast<double>( values[k] ) / weights[k] )