Cannot implicitly convert type 'double[]' to 'decimal[]'

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • JaronStrypsteen
  • Registratie: Augustus 2014
  • Laatst online: 23-07 12:31
Voor school moet ik een slider en een barchart samenvoegen met AjaxControlToolkit

Ik zit voor het moment vast omdat Cannot implicitly convert type 'double[]' to 'decimal[]' als error komt.

Afbeeldingslocatie: https://i.gyazo.com/320aa87442868da367847f6a9d3cc01f.png

Zou er iemand kunnen helpen? Is waarschijnlijk een simpele oplossing.

Beste antwoord (via JaronStrypsteen op 13-12-2016 11:11)


  • Gertjuhjan
  • Registratie: Juli 2010
  • Laatst online: 06-08 22:00

Gertjuhjan

Software Engineer

Als ik goed kijk heeft C# hier gewoon een converter voor:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void ConvertDoubleDecimal(decimal decimalVal){

    double doubleVal;

    // Decimal to double conversion cannot overflow.
       doubleVal = System.Convert.ToDouble(decimalVal);
    System.Console.WriteLine("{0} as a double is: {1}",
            decimalVal, doubleVal);

    // Conversion from double to decimal can overflow.
    try 
       {
       decimalVal = System.Convert.ToDecimal(doubleVal);
            System.Console.WriteLine ("{0} as a decimal is: {1}",
            doubleVal, decimalVal);
    } 
    catch (System.OverflowException) {
        System.Console.WriteLine(
            "Overflow in double-to-double conversion.");
    }


}


Bron

Edit: A black speedy was mij net voor.

no way dat je zelf die link hebt gebruikt om te zoeken....

[ Voor 14% gewijzigd door Creepy op 12-12-2016 15:28 ]

Xbox: Gulpener88

Alle reacties


Acties:
  • 0 Henk 'm!

  • TripleQ
  • Registratie: Juni 2004
  • Niet online
Ga naar je leraar? :?
Daarnaast verwacht die dus een decimal[] en jij geeft een Double[] mee. Dus ik vermoed dat je deze moet omzetten.

Acties:
  • 0 Henk 'm!

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 19-08 21:53
Je kunt niet het type double direct naar een decimal casten omdat je dan waarschijnlijk een loss of precision krijgt.

Echter zie ik in bovenstaande screenshot dat je het alleen gebruikt voor een count, dus zou je in regel 34 het type double gewoon kunnen vervangen door decimal.

Edit: Kijk ook even naar het gebruik van het var keyword. Maakt je leven wat makkelijker. En regel 31 kan een NullReferenceException opleveren. Zie ook http://stackoverflow.com/...ct-casting-vs-as-operator

[ Voor 28% gewijzigd door alex3305 op 11-12-2016 11:55 ]


Acties:
  • 0 Henk 'm!

  • JaronStrypsteen
  • Registratie: Augustus 2014
  • Laatst online: 23-07 12:31
TripleQ schreef op zondag 11 december 2016 @ 11:54:
Ga naar je leraar? :?
Daarnaast verwacht die dus een decimal[] en jij geeft een Double[] mee. Dus ik vermoed dat je deze moet omzetten.
De leraar verwacht dat we het zelf vinden.
Ik heb al verschillende omzettingen geprobeerd maar niets ging er. Ik hoop dat iemand mij kan helpen.
Ik kan ook altijd het project uploaden voor als er iemand die wil proberen te helpen.

Acties:
  • 0 Henk 'm!

  • JaronStrypsteen
  • Registratie: Augustus 2014
  • Laatst online: 23-07 12:31
alex3305 schreef op zondag 11 december 2016 @ 11:54:
Je kunt niet het type double direct naar een decimal casten omdat je dan waarschijnlijk een loss of precision krijgt.

Echter zie ik in bovenstaande screenshot dat je het alleen gebruikt voor een count, dus zou je in regel 34 het type double gewoon kunnen vervangen door decimal.

Edit: Kijk ook even naar het gebruik van het var keyword. Maakt je leven wat makkelijker. En regel 31 kan een NullReferenceException opleveren. Zie ook http://stackoverflow.com/...ct-casting-vs-as-operator
Afbeeldingslocatie: https://i.gyazo.com/93b57ac0a0677e58f19b691df5b362d0.png
Dit heb ik als ik double vervang naar decimal

Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
1) waarom doe je een format(prijspereenheid, 'currency') in je SQL?
2) waarom cast je het object wat je als 'prijspereenheid' terug krijgt eerst naar een string, en vervolgens naar een integer?
3) wat is het datatype van y[i]? Welk datatype probeer je er nu in op te slaan?

Acties:
  • 0 Henk 'm!

  • JaronStrypsteen
  • Registratie: Augustus 2014
  • Laatst online: 23-07 12:31
ValHallASW schreef op zondag 11 december 2016 @ 12:02:
1) waarom doe je een format(prijspereenheid, 'currency') in je SQL?
2) waarom cast je het object wat je als 'prijspereenheid' terug krijgt eerst naar een string, en vervolgens naar een integer?
3) wat is het datatype van y[i]? Welk datatype probeer je er nu in op te slaan?
De leerkracht heeft ons 2 projecten gegeven (BarChart en Slider) en die moeten we in 1 voegen.
Wij gebruiken een class om een Acces databank te linken aan ons project.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:32

Creepy

Tactical Espionage Splatterer

JaronStrypsteen schreef op zondag 11 december 2016 @ 11:56:
[...]


De leraar verwacht dat we het zelf vinden.
Ik heb al verschillende omzettingen geprobeerd maar niets ging er. Ik hoop dat iemand mij kan helpen.
Ik kan ook altijd het project uploaden voor als er iemand die wil proberen te helpen.
Wat heb je dan al geprobeerd en wat lukte er niet mee? Het is jouw opdracht. Jij moet het doen. Op deze manier ons jouw werk laten doen is niet de bedoeling. De foutmelding zijn toch redelijk duidelijk, dus wat zou je zelf als eerste proberen om dat te fixen? Wat denk je dat de melding nu daadwerkelijk betekent?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • JaronStrypsteen
  • Registratie: Augustus 2014
  • Laatst online: 23-07 12:31
Creepy schreef op zondag 11 december 2016 @ 12:17:
[...]

Wat heb je dan al geprobeerd en wat lukte er niet mee? Het is jouw opdracht. Jij moet het doen. Op deze manier ons jouw werk laten doen is niet de bedoeling. De foutmelding zijn toch redelijk duidelijk, dus wat zou je zelf als eerste proberen om dat te fixen? Wat denk je dat de melding nu daadwerkelijk betekent?
Ik heb al verschillende converts geprobeert. Ik heb pas de error als ik die "dtVoorraad = gvProducten.DataSource as DataTable;" heb toegevoegd. Zonder de slider werkt hij perfect.
Heb ook al op internet dingen gezocht maar nog niets gevonden dat werkt. Ik weet dat ik "y" moet omzetten maar vind niet naar wat of hoe ik dat moet doen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 18-08 21:08

NMe

Quia Ego Sic Dico.

JaronStrypsteen schreef op zondag 11 december 2016 @ 12:21:
[...]

Heb ook al op internet dingen gezocht maar nog niets gevonden dat werkt. Ik weet dat ik "y" moet omzetten maar vind niet naar wat of hoe ik dat moet doen.
Het toverwoord "casten" is hierboven al genoemd. Nou zit jij alleen met arrays en niet met individuele variabelen, dus daar zul je zelf iets slims voor moeten verzinnen. Al dan niet door wat langer te Googlen met wat meer sleutelwoorden of door een loopje te schrijven waarin je de conversie zelf doet.

Als je code post, doe dat dan trouwens eens gewoon als tekst tussen [code=c#] tags in plaats van als plaatje. Dan heeft iemand anders later misschien ook nog wat aan je vraag.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • kzin
  • Registratie: Oktober 2003
  • Laatst online: 10:05
Weet je wat er allemaal in dtVoorraad..Rows[i][ ] zit?
De foutmelding is toch heel duidelijk lijkt me.
Misschien moet je het daarom ook wel niet x[i] en y[i] noemen, maar zinvolle namen geven, zodat iemand die naar de code kijkt direkt snapt wat voor data er gebruikt wordt. Ik denk aan mogelijke namen voor y[i] als: minimumStock[i], actualPrice[i], etc.
Als je de hele tabel gaat processen is het wat meer werk, maar je hebt wel leesbare code.

Acties:
  • 0 Henk 'm!

  • xzaz
  • Registratie: Augustus 2005
  • Laatst online: 09:19
Creepy schreef op zondag 11 december 2016 @ 12:17:
[...]

Wat heb je dan al geprobeerd en wat lukte er niet mee? Het is jouw opdracht. Jij moet het doen. Op deze manier ons jouw werk laten doen is niet de bedoeling. De foutmelding zijn toch redelijk duidelijk, dus wat zou je zelf als eerste proberen om dat te fixen? Wat denk je dat de melding nu daadwerkelijk betekent?
Commentaar op mod acties mag in Feedback op moderatie binnen de Devschuur

[i][1] weet je welke waarde dit bevat?

[ Voor 13% gewijzigd door Creepy op 12-12-2016 11:41 ]

Schiet tussen de palen en je scoort!


Acties:
  • +1 Henk 'm!

  • blackspeedy
  • Registratie: Juni 2011
  • Laatst online: 19-08 23:37
JaronStrypsteen schreef op zondag 11 december 2016 @ 11:59:
[...]

[afbeelding]
Dit heb ik als ik double vervang naar decimal
Je convert naar een int en je verwacht hier een decimal.
Verander dat en het moet werken volgens mij.

C#:
1
y[i] = Convert.ToDecimal(dtVoorraad.Rows[i][1]);

[ Voor 14% gewijzigd door blackspeedy op 12-12-2016 12:30 ]


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Gertjuhjan
  • Registratie: Juli 2010
  • Laatst online: 06-08 22:00

Gertjuhjan

Software Engineer

Als ik goed kijk heeft C# hier gewoon een converter voor:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void ConvertDoubleDecimal(decimal decimalVal){

    double doubleVal;

    // Decimal to double conversion cannot overflow.
       doubleVal = System.Convert.ToDouble(decimalVal);
    System.Console.WriteLine("{0} as a double is: {1}",
            decimalVal, doubleVal);

    // Conversion from double to decimal can overflow.
    try 
       {
       decimalVal = System.Convert.ToDecimal(doubleVal);
            System.Console.WriteLine ("{0} as a decimal is: {1}",
            doubleVal, decimalVal);
    } 
    catch (System.OverflowException) {
        System.Console.WriteLine(
            "Overflow in double-to-double conversion.");
    }


}


Bron

Edit: A black speedy was mij net voor.

no way dat je zelf die link hebt gebruikt om te zoeken....

[ Voor 14% gewijzigd door Creepy op 12-12-2016 15:28 ]

Xbox: Gulpener88


Acties:
  • +1 Henk 'm!

  • JaronStrypsteen
  • Registratie: Augustus 2014
  • Laatst online: 23-07 12:31
Gertjuhjan schreef op maandag 12 december 2016 @ 12:32:
Als ik goed kijk heeft C# hier gewoon een converter voor:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void ConvertDoubleDecimal(decimal decimalVal){

    double doubleVal;

    // Decimal to double conversion cannot overflow.
       doubleVal = System.Convert.ToDouble(decimalVal);
    System.Console.WriteLine("{0} as a double is: {1}",
            decimalVal, doubleVal);

    // Conversion from double to decimal can overflow.
    try 
       {
       decimalVal = System.Convert.ToDecimal(doubleVal);
            System.Console.WriteLine ("{0} as a decimal is: {1}",
            doubleVal, decimalVal);
    } 
    catch (System.OverflowException) {
        System.Console.WriteLine(
            "Overflow in double-to-double conversion.");
    }


}


Bron

Edit: A black speedy was mij net voor.

[mbr]no way dat je zelf die link hebt gebruikt om te zoeken....[/]
toon volledige bericht
blackspeedy schreef op maandag 12 december 2016 @ 12:23:
[...]


Je convert naar een int en je verwacht hier een decimal.
Verander dat en het moet werken volgens mij.

C#:
1
y[i] = Convert.ToDecimal(dtVoorraad.Rows[i][1]);
Bedankt. Het werkt nu volledig. Ik snap wat je doet maar zou er zelf niet opkomen
Bedankt allemaal!

Acties:
  • +1 Henk 'm!

  • Gertjuhjan
  • Registratie: Juli 2010
  • Laatst online: 06-08 22:00

Gertjuhjan

Software Engineer

JaronStrypsteen schreef op dinsdag 13 december 2016 @ 11:12:
[...]


[...]

Bedankt. Het werkt nu volledig. Ik snap wat je doet maar zou er zelf niet opkomen
Bedankt allemaal!
Blijkbaar mag ik niet LMGIFY gebruiken, dus ik probeer het hier uit te leggen. In geval van software ontwikkeling, is google echt je vriend.

Als ik iets niet weet, dan ga ik naar google, en vul de de volgende zaken in: De taal, en de termen waar ik meer informatie over wil.

In dit geval gebruikte ik dus "C# convert double to decimal".

Als je geluk hebt, is de eerste hit een MSDN pagina waar waar direct een converter wordt geadviseerd. Mochten er geen converters voor bestaan, dan is er altijd wel ergens een stackoverflow antwoord met de juiste conversie.

Xbox: Gulpener88

Pagina: 1