943,763 Members | Top Members by Rank

Ad:
  • C Discussion Thread
  • Unsolved
  • Views: 15154
  • C RSS
Aug 11th, 2004
0

cannot convert from 'double' to 'float [6][3]'

Expand Post »
Using this code:

Fees = ovrh + (wr * z);

I am getting the following error:

error C2440: '=' : cannot convert from 'double' to 'float [6][3]'

Fees, ovrhd, wr and z are all declared as float. I believe if I can figure out what the problem is, I will have a functioning program. After several days straight of this program, I believe that I may be forgetting something basic.
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
tnorton is offline Offline
3 posts
since Aug 2004
Aug 11th, 2004
0

Re: cannot convert from 'double' to 'float [6][3]'

Could you show more of the code? Specifically the actual declarations for the variables would be helpful. I find no such issue with this minimal code sample.
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5. float ovrh = 1.0F, wr = 1.0F, z = 1.0F, Fees = ovrh + (wr * z);
  6. printf("Fees = %g\n", Fees);
  7. return 0;
  8. }
Team Colleague
Reputation Points: 2780
Solved Threads: 312
long time no c
Dave Sinkula is offline Offline
4,790 posts
since Apr 2004
Aug 12th, 2004
0

Re: cannot convert from 'double' to 'float [6][3]'

The calculation of two floats yields a double. Compilers often WARN about converting from double to float because of a possible loss of precision.

YOUR error code sure sounds like you have an ARRAY of floats like

float fees[6][3];

fees = 1.0 * 2.0; // error double to float [6][3]
Reputation Points: 36
Solved Threads: 11
Posting Pro in Training
Chainsaw is offline Offline
436 posts
since Jun 2004
Aug 12th, 2004
0

Re: cannot convert from 'double' to 'float [6][3]'

Slight nitpick:
Quote originally posted by Chainsaw ...
The calculation of two floats yields a double.
  1. fees = 1.0 * 2.0;
Those aren't two floats (1.0 and 2.0), they're two doubles.
Team Colleague
Reputation Points: 2780
Solved Threads: 312
long time no c
Dave Sinkula is offline Offline
4,790 posts
since Apr 2004
Aug 12th, 2004
0

Re: cannot convert from 'double' to 'float [6][3]'

The purpose of the program is to store shipping costs in an array and then display them on the screen, in a formatted output.

Here are the declarations:

float Fees [6][3];
float i, j;
int wr, z;
const double ovrh = 2.27; // I tried to enter this as a const float, but the compiler didn't like it, so I changed it to a double which solved that one problem.

The assignment is 4 days late, so I am going to just turn it in as it. I would still like to see it work though. Thank you so much for your help!

Quote originally posted by Dave Sinkula ...
Could you show more of the code? Specifically the actual declarations for the variables would be helpful. I find no such issue with this minimal code sample.
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5. float ovrh = 1.0F, wr = 1.0F, z = 1.0F, Fees = ovrh + (wr * z);
  6. printf("Fees = %g\n", Fees);
  7. return 0;
  8. }
Reputation Points: 10
Solved Threads: 0
Newbie Poster
tnorton is offline Offline
3 posts
since Aug 2004
Aug 12th, 2004
0

Re: cannot convert from 'double' to 'float [6][3]'

The purpose of the program is to store shipping costs in an array and then display them on the screen, in a formatted output.

Here are the declarations:

float Fees [6][3];
float i, j;
int wr, z;
const double ovrh = 2.27; // I tried to enter this as a const float, but the compiler didn't like it, so I changed it to a double which solved that one problem.

The assignment is 4 days late, so I am going to just turn it in as it. Thank you so much for your help!

Quote originally posted by Chainsaw ...
The calculation of two floats yields a double. Compilers often WARN about converting from double to float because of a possible loss of precision.

YOUR error code sure sounds like you have an ARRAY of floats like

float fees[6][3];

fees = 1.0 * 2.0; // error double to float [6][3]
Reputation Points: 10
Solved Threads: 0
Newbie Poster
tnorton is offline Offline
3 posts
since Aug 2004
Aug 12th, 2004
0

Re: cannot convert from 'double' to 'float [6][3]'

Aha! So your original statement was not entirely accurate.
Quote ...
Fees, ovrhd, wr and z are all declared as float.
Fees is declared as an array of an array of float -- this is not the same and your compiler was kindly informing you of this. A single float might be Fees[0][0]. Try this (I'm assuming i and j are loop indices -- except that then they must be integral types and not floating point, but I'm used to i and j as loop indices -- and this is inside these loops.
  1. Fees[i][j] = ovrh + (wr * z);
Team Colleague
Reputation Points: 2780
Solved Threads: 312
long time no c
Dave Sinkula is offline Offline
4,790 posts
since Apr 2004
Aug 12th, 2004
0

Re: cannot convert from 'double' to 'float [6][3]'

Ah HAH! As I suspected.

Dave, you are right that '1.0' is a double. However, I still believe that two floats used in a calculation result in a double, in the same way that two chars used in a calculation result in an int. In any case, the compiler can deal with that and generally puts out a warning, not an error.
Reputation Points: 36
Solved Threads: 11
Posting Pro in Training
Chainsaw is offline Offline
436 posts
since Jun 2004
Aug 12th, 2004
0

Re: cannot convert from 'double' to 'float [6][3]'

Quote originally posted by Chainsaw ...
Ah HAH! As I suspected.

Dave, you are right that '1.0' is a double. However, I still believe that two floats used in a calculation result in a double, in the same way that two chars used in a calculation result in an int. In any case, the compiler can deal with that and generally puts out a warning, not an error.
Actually, two chars used in a calculation result in a char, but there may be overflow. Calculations stay withing their type. But, yes. The reason for the 'double' part of the diagnostic was with this.
 const double ovrh = 2.27;
Multiplying two floats results in a float; but adding that result to a double promotes the float result to a double. And yes, attempting to then assign this double result to a float should generate a warning.
Team Colleague
Reputation Points: 2780
Solved Threads: 312
long time no c
Dave Sinkula is offline Offline
4,790 posts
since Apr 2004
Aug 12th, 2004
0

Re: cannot convert from 'double' to 'float [6][3]'

Oops. I didn't read the comment.
Quote ...
// I tried to enter this as a const float, but the compiler didn't like it, so I changed it to a double which solved that one problem
It makes me curious -- tnorton: are you saying that the compiler barked about something like this?
  1. const float ovrh = 2.27F;
But the other stuff about the promotions should be correct.
Team Colleague
Reputation Points: 2780
Solved Threads: 312
long time no c
Dave Sinkula is offline Offline
4,790 posts
since Apr 2004

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C Forum Timeline: Commission or Brokerage Problem
Next Thread in C Forum Timeline: Linking errors of socket functions





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC