Compiler says cast then when done says no can do
Tower Ty
towerty at msn.com.au
Wed May 21 13:23:48 PDT 2008
Koroskin Denis Wrote:
> On Wed, 21 May 2008 15:25:48 +0400, Ty Tower <towerty at msn.com.au> wrote:
> > I have this line
> >
> > double balance=values[6]-values[5]; (values 5&6 are char[])
> >
> > so I change to
> > double balance=-(double)values[6]-(double)values[5];
> > compiler says : C style cast illegal, use cast(double)values[6]
> >
> > so I change to
> > double balance=cast(double)values[6]-cast(double)values[5];
> > compiler says: Error: e2ir: cannot cast from char[] to double
> >
> > So as I see it the compiler message in this case at least is wrong or
> > there is a problem casting from a char array to a double . Is it a
> > problem with the compiler message?
> >
> >
>
> What do you want to get by casting from char[] to double?
>
> if `values[5]` stores something like "3.14" then cast won't return what
> you expect,
> consider using something like double t = to!(double)("3.14"); or
> toDouble("2.73")
>
> Both are defined in std.conv
dmd 1.024
I use Tango to!(double) compiles OK but toDouble does not
The char{} values has a changeable string like "300.00" in 5 6 & 7
I tried
double olddebit = Float.parse(values[5]);
double oldcredit = Float.parse(values[6]);
double oldbalance = Float.parse(values[7]);
I change the amounts here then
double balance = oldbalance + olddebit - oldcredit - to!(double)(values[5]) +
to!(double)(values[6]);
values[7]= to!(char[])(balance);
which compiles but the result is nan (not a number I assume)
double olddebit = to!(double)(values[5]);
double oldcredit = to!(double)(values[6]);
double oldbalance = to!(double)(values[7]);
double balance = oldbalance + olddebit - oldcredit - to!(double)(values[5]) +
to!(double)(values[6]);
values[7]= to!(char[])(balance);
this also compiles but gives nan ?
More information about the Digitalmars-d-learn
mailing list