سلام به اساتید محترم..
سوالی که داشتم اینه که اگه بخوایم جزء صحیح یک عدد رو بدست بیاریم ایا تابعی هست یا خیر؟ ممنون می شم راهنمایی کنین..
سلام به اساتید محترم..
سوالی که داشتم اینه که اگه بخوایم جزء صحیح یک عدد رو بدست بیاریم ایا تابعی هست یا خیر؟ ممنون می شم راهنمایی کنین..
double I = 25.3333;
MessageBox.Show(String.Format("{0:n0}", I));
شما مقدار بعد از n0 را اگر بشتر کنید میتونید تا مقدار رقم اعشار جلو روید.
یعنی اگر من در دستور بالا مقدار n1 را می گذاشتم ، عدد 25.3 نمایش داده میشد.
چون ما اصلا مقدار اعشار را لازم نداشتیم آن را 0 گذاشتم. دستور بالا را طور دیگر هم میشه بگار برد.اما شما همینطور بکار ببرید.
میتونیم n را حذف کنیم
String.Format("{0:0}", I)
آخرین ویرایش به وسیله DLL_DLL : سه شنبه 12 آبان 1388 در 22:29 عصر
متاسفانه این راهی که دوست عزیزمون DLL_DLL گفتن ربطی به تابع جزصحیح ندارد چون اگر مقدار زیر وارد شود کارایی ندارد
MessageBox.Show(String.Format("{0:n0}", -25.99));
خروجی مقدار 26- است و این معادل تابع کف یا همان Floor می باشد
و در صورتی هم که نیاز به تابع کف دارید بهتر است از راه اصولی تری به خروجی خود دست یابید
MessageBox.Show(Math.Floor(-25.86).ToString());
خروجی مقدار 26- است
اما اگر نیاز به تابع جز صحیح دارید باید به شکل زیر عمل نمایید
MessageBox.Show(Math.Truncate(-25.99).ToString());
خروجی مقدار 25- است
MessageBox.Show(Math.Truncate(25.99).ToString());
خروجی مقدار 25 است
آخرین ویرایش به وسیله alireza_tavakol : سه شنبه 12 آبان 1388 در 22:52 عصر
متسفانه باید بگم کار میده ، نمی دونیی چقدر عالییییییییییییییییی.
عزیزم!!! دستور Format که این چیزا سرش نمیشه !
حداقل یک تستی میکردییی! بعد تاسف میخوردی به حال من!!
سلام دوست من، فکر میکنم حق با alireza_tavakol هست،
البته اون که شما نوشتی فکر میکنم round میکنه، اما به هر حال اینو در نظر داشته باش که داری به string هم تبدیلش میکنی. و اگه بعد از اون به عنون عدد ازش استفاده کنی یعنی در واقع لقمه رو دور سرت چرخوندی.
اما روش درست و اصولی اینه که، از توابع موجود در math استفاده کنی، خب چه کاریه؟
وقتی توابع Floor، Cieling، Round و Truncate و .... برای استفاده های مختلف موجود هست بری از String.Format که کارش چیز دیگه ای هست استفاده کنی؟
خیلی چیزها ممکن هست که کار بده، ولی هر چیزی که کار بده قرار نیست عالی باشه!متسفانه باید بگم کار میده ، نمی دونیی چقدر عالییییییییییییییییی.
عزیزم!!! دستور Format که این چیزا سرش نمیشه !
شما دارید به کاربر پیشنهاد می کنید برای به دست آوردن مقدار صحیح یک عدد اعشاری، آن را تبدیل به string کنه، بعد با استفاده از تابع Format روی آن string پردازش انجام بده، در حالی که برای این کار توابع استانداردی وجود دارند که مستقیما بر روی داده اعشاری، بدون نیاز به تبدیل نوع، کار می کنند.
لقمه غذا را میشه قبل از بلعیدن چند بار دور سر چرخاند، ولی به چرخاندن لقمه دور سر قبل از بلعیدن نمیگن "عالی"!
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
نه ، ایشون گفت کار نمیده!!!!!!! بنده گفتم خیلی عالی کار میده. ایشون مثال زد رو اعداد منفی!
من نگفتم کد عالیه! گفتم عالی کار میده!
درخواست کننده تاپیک هم گفت ، میخوام پیدا کنم جز صحیح را. منم روش جدا کردن را گفتم.
جناب آقای علیرضا هم توسط رند کردن عدد اینکارو کردن.
من نگفتم ایشون اشتباه گفتن ، ایشون به روش کار من گیر دادن.
ایشون می گفت خروجی دستور format اشتباه.در صورتی که نبود. ، منم گفتم خیلی هم عایی کار میکنه.
تازه روشی که بنده گفتم تابعی بود که خیلی جاهای دیگه هم بدردشون میخوره.
تازه بنده که نگفتم کد من بهترین هست!! من اینو بلد بودم ، و به ایشون گفتم! اگه جناب آقای علیرضا زودتر گفته بود ، شاید reply نمی دادم یا اگه می دادم ، می گفتم این روش علیرضا بری بهتره ، اما این روش هم هست.
به هر حال دستور format از لحاظ کد نویسی اونقدر بیشتر و سخت تر نیست که لقمه دور سر پیچوندن باشه.
خوبیش اینکه اگر زمانی خواستن هم می تونن تا هر رقم اعشار را خواستن انتخاب کنن.
البته شاید تابعی مخصوص اینکار باشه اما من از این روش استفاده می کنم.
آخرین ویرایش به وسیله DLL_DLL : چهارشنبه 13 آبان 1388 در 00:31 صبح
دوست خوبم آقای "علی کشاورز".با سلام.
قبل از هر چیزی از شما تشکر می کنم و خواستم یه مشورتی با شما کرده باشم.من قبلا دلفی کار می کردم.دلفی رو هم تا جاهای خوبی پیش برده بودم.تا حدی که با sql توش برنامه می نوشتم.ولی خوب هنوز چیزهای خیلی زیادی هست که یاد نگرفتم.حالا اومدم سراغ سی شارپ. و قصد دارم سی شارپ و دلفی رو با همدیگه ادامه بدم.چون احساس می کنم سی شارپ هم خیلی می تونه مفید باشه و خیلی دوست دارم دو زبان برنامه نویسی بدونم.لطفا منو راهنمایی کنین.. باتشکر.
سلام، این سوال شما مربوط به این تاپیک نمیشه. اگر جواب کوتاه و مختصر میخواید؛ کار خوبی می کنید که هر دو رو یاد می گیرید.حالا اومدم سراغ سی شارپ. و قصد دارم سی شارپ و دلفی رو با همدیگه ادامه بدم.چون احساس می کنم سی شارپ هم خیلی می تونه مفید باشه و خیلی دوست دارم دو زبان برنامه نویسی بدونم.لطفا منو راهنمایی کنین.. باتشکر.
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
دوست عزیز من باز هم سر حرفم هستم تابع format به عنوان تابع جز صحیح کار نمی ده شما می تونی با یک عدد منفی تستش کنی
من اولین پستی که دادم از شما تشکر کردم و در ادامه فقط به تابع floor اشاره کردم ولی بعد از 20 دقیقه فکر کردن دلیل نقضش رو پیدا کردم و پستم رو اصلاح کردم ...
درضمن خیلی خوبه که یک درخواست با پاسخ های مختلف روبرو بشه و خیلی خوبه که راه های اشتباه عنوان بشه
کاملا موافقم، همه ما اینجا جمع شدیم که یک چیزی یاد بگریم، اگر روشی که استفاده میکنم اشتباه است و یا کم و کسری دارد و یا اینکه یک روش بهتر و یا متفاوت که در شرائط دیگر جواب میده و یا به دانائی خودمان و دیگران اضافه میکنه وجود دارد باید گفته بشه. از اینکه با روشهایه اشتباه پیش بریم بدتر چیزی نیست . هیهات منا الذله.
بنده از زبانهای .net بیزارم ، علاقه ای به تسط در آنها ندارم اما دیگه یکمی را بلد هستم.
یا کامپایلر شما خرابه علیرضا جان ، یا کامپایلر من زیادی درسته!
حالا که نمیخوای کوتاه بیای هم سورسو برات گذاشتم ، هم عکس از خروجی!
اگر کسی دیگه هم تست کرده بیاد خروجیشو اعلام کنه.
مشکل اصلی ربطی به زبان ندارد، من ۷ سال دلفی کار کردم و قبلش پیاچپی و ....
مشکل اصلی ، مشکل مفهومی است، قسمت صحیح یک عدد باید عدد باشد، متد فرمت عدد برنمیگرداند، رشته برمیگرداند (این مطلب در پست جناب کشاورز گفته شده بود).
حتی اگر برنامهنویسی را هم بزاریم کنار ، در ریاضیات فانکش فلور و سیلینگ به همین معنا بکار میرند.
به جایه اینکه از زبانهایه داتنت بیزار باشید برید خدا را شکر که کنید که چه نعمتی در دستتان هست و قدرش را نمیدانید، قبل از دات نت، دست برنامهنویسها بسته بود، قدرتی که دات نت در دستتان قرار داده را استفاده نکنید از دست دادید.
اگر چیزهایی که در سیشارپ ۲۰۱۰ درمیاد در ۱۹۸۰ موجود بود
من همیشه از افرادی که از نظرشون دفاع می کنم خوشم می یومده ( احسنت )
دوست عزیز شما به پست من دقت نکردن مثالی که من زدم این بودهdouble I = -25.9;
MessageBox.Show(String.Format("{0:n0}", I));
تابع Format Strin عدد را به سمت کف گرد میکند
چون عدد 25.333- به سمت پایین گرد میشود خروجی 25- است ولی اگه با عدد 25.9- تست کنی به اشتباهت پی میبری