PDA

View Full Version : مشکل در تبدیل نوع float و string به هم



Developer Programmer
سه شنبه 07 آبان 1387, 19:58 عصر
مشکل سطر 3 و 4 چیه که کامپایل نمیشه؟



string s = ""; // null
float f = (float )(6 / 5); // 1.2
s = f.ToString; // "1.2"
s = (string) (float.Parse(s) + 1); //"2.2"

Salar Ashgi
سه شنبه 07 آبان 1387, 20:12 عصر
سلام دوست عزیز ، شما در خط 3 برای متود To String پارانتز هاشو نذاشتی و در خط 4 بهتره از متود

To String استفاده کنید ، کد اصلاح شده :



string s = ""; // null
float f = (float)(6 / 5); // 1.2
s = f.ToString(); // "1.2"
s = (float.Parse(s) + 1).ToString(); //"2.2"


موفق و پیروز باشید !!!

parsamiga
سه شنبه 07 آبان 1387, 20:25 عصر
سلام دوست عزیز



string s = "";
float f =1.2f;
s = f.ToString();
s = (Convert.ToSingle(s) + 1).ToString();


موفق باشی

parsamiga
سه شنبه 07 آبان 1387, 20:28 عصر
جناب salar_cpp_cs جواب شما عدد رو گرد میکنه لطفا تست کنید...

Salar Ashgi
سه شنبه 07 آبان 1387, 21:38 عصر
جناب salar_cpp_cs جواب شما عدد رو گرد میکنه لطفا تست کنید...

===============================

من فقط کد اصلاح شده دوستمون رو نوشتم ، ممکنه منطق برنامه چیزی دیگه باشه !!!

Developer Programmer
سه شنبه 07 آبان 1387, 21:46 عصر
این قسمت رو توضیح می دی که چرا از Convert استفاده میکنی؟ چرا Parse نمیشه؟

s = (Convert.ToSingle(s) + 1).ToString();

چرا اخر عدد اعشاری باید suffix بذاریم؟ " 1.2f"

SMRAH1
سه شنبه 07 آبان 1387, 23:05 عصر
سلام

مشکل دستوری (عدم کامپایل) را جناب Salar گفتند ('شما در خط 3 برای متود To String پارانتز هاشو نذاشتی و در خط 4 بهتره از متود ').اما در برنامه یک اشتباه سهوی هم روی داده است.در خط

float f = (float)(6 / 5);
خروجی بر عکس چیزی که شما فکر می کنید باید 1.2 باشد ،خروجی 1.0 است!دلیل آن این است که ابتدا دو عدد 6 و 5 که هر دو صحیح هستند بر هم تقسیم صحیح شده و خارج قسمت آن یعنی 1 حاصل عبارت 6/5 خواهد بود.حالا این عدد 1 به شکل اعشاری در f ذخیره می شود.برای بدست آوردن جواب اعشاری 1.2 باید یکی از دو عبارت زیر را بنویسید:

float f = ((float)6 / 5);
float f = (6.0F / 5);
که در اولی قبل از تقسیم عدد 6 را به اعشاری تبدیل می کنید (حالا تقسیم یک عدد اعشاری بر عدد صحیح صورت می پذیرد) البته فرقی نمی کند که 6 یا 5 را به اعشاری تبدیل کنید ولی باید حتما یکی از اعداد را به اعشاری تبدیل کنید و در دومی هم رسما 6 را عدد اعشاری معرفی کرده اید (6.0ّF).

موفق باشید

parsamiga
چهارشنبه 08 آبان 1387, 10:46 صبح
سلام

نقل قول: چرا اخر عدد اعشاری باید suffix بذاریم؟ " 1.2f"
--------------------------------------------------------------
اگر suffix (f) رو نذاری کامپایلر به شما error میده دلیلش اینه که شما سغی میکنین که یک مقدار double رو در float ذخیره کنی


نقل قول :این قسمت رو توضیح می دی که چرا از Convert استفاده میکنی؟ چرا Parse نمیشه؟

کد:
s = (Convert.ToSingle(s) + 1).ToString();
متد parse هم میتونی استفاده کنی ، این متد string رو به number تبدیل میکنه



s = (float.Parse(s) + 1).ToString();


در متد convert دقیقا می تونی نوعت رو مشخص کنی ToSingle

mosiera98
دوشنبه 17 فروردین 1388, 09:02 صبح
ببخشید من وقتی میخوام مقدار یک تکس باکس که مقدارش مثلا" "2.34" هستش رو وقتی با دستور float.parse("2.34") تبدیل میکنم مقدار اون یک عدد میشه با 10 رقم اعشار یعنی میشه 2.300005498778
میشه لطفا منو راهنمایی کنید تا دقیقا همون عدد با دو رقم اعشار رو تو دیتابیش ذخیره کنم