Mesaj de eroare al compilatorului: CS0029: Nu se poate converti implicit tipul ‘int’ în ‘string’ (Programare, C#)

Chevy Mark Sunderland a intrebat.

Am nevoie să convertesc String de intrare a bazei de date a tabelului în valoare întreagă în C# .NET 4 și am încercat acest cod inspirat din acest link:

    int i;
    string Entry_Level = Convert.ToInt32("2,45");
    i = Convert.ToInt32(Entry_Level); 

Dar am această eroare:

Mesaj de eroare de compilare: CS0029: Nu se poate converti implicit tipul ‘int’ în ‘string’.

EDITARE

Rezolvat cu:

    decimal i;
    string Entry_Level = "2,45";
    i = Convert.ToDecimal(Entry_Level);

    Response.Write(i.ToString());
    Response.End();

În ieșire am 2,45, multe mulțumiri!

Comentarii

  • Ce int valoare așteptați? –  > Por David Heffernan.
  • vă mulțumesc, mă aștept la 2,45 –  > Por Chevy Mark Sunderland.
  • @user3436943 2.45 nu este un int… –  > Por Marc Gravell.
  • Asta nu este un int. –  > Por David Heffernan.
  • Ar putea fi double sau decimal în funcție de ceea ce reprezintă valoarea. –  > Por Rik.
4 răspunsuri
Moeri
string Entry_Level = Convert.ToInt32("2,45");

ar trebui să fie

string Entry_Level = "2,45";

De ce nu merge totuși pentru asta:

int i = 2,45;

Dar, din moment ce nu este un număr întreg, veți avea nevoie de unul dintre tipurile zecimale încorporate:

/* use this when precision matters a lot, for example when this is a unit price or a percentage value that will be multiplied with big numbers */
decimal i = 2.45 


/*  use this when precision isn't the most important part. 
It's still really precise, but you can get in trouble when dealing with really small or really big numbers. 
Doubles are fine in most cases.*/
double i = 2.45 

Vedeți acest fir pentru mai multe informații despre zecimale vs dublu.

Comentarii

  • Acest lucru este în regulă, dar neglijează orice considerație cu privire la ceea ce se întâmplă atunci când treceți "2,45" la Convert.ToInt32() –  > Por David Heffernan.
  • Problema dublei vs zecimale nu este una de precizie. Este vorba despre reprezentarea binară sau zecimală. –  > Por David Heffernan.
  • Nu este vorba chiar de precizie, dar precizia intră în joc atunci când le comparăm pe cele două. Am adăugat un link cu o explicație completă a diferenței dintre zecimale și duble –  > Por Moeri.
  • Am o înțelegere solidă a diferenței dintre zecimale și duble și sunt aici pentru a vă spune că problema cheie este mai degrabă zecimala vs binar decât precizia. –  > Por David Heffernan.
David Heffernan

Valoarea 2,45 nu reprezintă un număr întreg. Este o valoare reală. Așadar, cred că de fapt căutați Convert.ToDouble sau Convert.ToDecimal. Sau poate double.Parse sau decimal.Parse.

De asemenea, ar putea fi necesar să vă gândiți la ce se întâmplă atunci când vă rulați codul pe o mașină care nu utilizează , ca separator zecimal. Luați în considerare utilizarea supraîncărcărilor care acceptă IFormatProvider.

harits nurrois

încercați aceasta

string Entry_Level = Convert.ToInt32("2,45").toString()

Md.Rajibul Ahsan

Puteți utiliza linia de cod de mai jos, care va elimina eroarea de compilare, dar va trece prin și Runtime Exception deoarece 2,45 nu este un număr întreg valid.

string Entry_Level = Convert.ToInt32("2,45").ToString(); 

Vă sugerez să scrieți linia de cod de mai jos care vă va ajuta să obțineți valoarea 2,45 pe variabila numită i.

decimal i;
string Entry_Level = "2,45";
Entry_Level = Entry_Level.Replace(',', '.');
i = Convert.ToDecimal(Entry_Level);  

Tags: