PDA

View Full Version : جزء صحیح!



farzane_fn
سه شنبه 12 آبان 1388, 21:25 عصر
سلام به اساتید محترم..
سوالی که داشتم اینه که اگه بخوایم جزء صحیح یک عدد رو بدست بیاریم ایا تابعی هست یا خیر؟ ممنون می شم راهنمایی کنین..

DLL_DLL
سه شنبه 12 آبان 1388, 22:03 عصر
double I = 25.3333;
MessageBox.Show(String.Format("{0:n0}", I));



شما مقدار بعد از n0 را اگر بشتر کنید میتونید تا مقدار رقم اعشار جلو روید.

یعنی اگر من در دستور بالا مقدار n1 را می گذاشتم ، عدد 25.3 نمایش داده میشد.
چون ما اصلا مقدار اعشار را لازم نداشتیم آن را 0 گذاشتم. دستور بالا را طور دیگر هم میشه بگار برد.اما شما همینطور بکار ببرید.

میتونیم n را حذف کنیم

String.Format("{0:0}", I)

alireza_tavakol
سه شنبه 12 آبان 1388, 22:34 عصر
متاسفانه این راهی که دوست عزیزمون 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 است

DLL_DLL
سه شنبه 12 آبان 1388, 22:53 عصر
متسفانه باید بگم کار میده ، نمی دونیی چقدر عالییییییییییییییییی.
عزیزم!!! دستور Format که این چیزا سرش نمیشه !
حداقل یک تستی میکردییی! بعد تاسف میخوردی به حال من!!

mn_zandy63
چهارشنبه 13 آبان 1388, 00:02 صبح
متسفانه باید بگم کار میده ، نمی دونیی چقدر عالییییییییییییییییی.
عزیزم!!! دستور Format که این چیزا سرش نمیشه !
حداقل یک تستی میکردییی! بعد تاسف میخوردی به حال من!!

سلام دوست من، فکر میکنم حق با alireza_tavakol هست،
البته اون که شما نوشتی فکر میکنم round میکنه، اما به هر حال اینو در نظر داشته باش که داری به string هم تبدیلش میکنی. و اگه بعد از اون به عنون عدد ازش استفاده کنی یعنی در واقع لقمه رو دور سرت چرخوندی.
اما روش درست و اصولی اینه که، از توابع موجود در math استفاده کنی، خب چه کاریه؟
وقتی توابع Floor، Cieling، Round و Truncate و .... برای استفاده های مختلف موجود هست بری از String.Format که کارش چیز دیگه ای هست استفاده کنی؟

vcldeveloper
چهارشنبه 13 آبان 1388, 00:03 صبح
متسفانه باید بگم کار میده ، نمی دونیی چقدر عالییییییییییییییییی.
عزیزم!!! دستور Format که این چیزا سرش نمیشه !خیلی چیزها ممکن هست که کار بده، ولی هر چیزی که کار بده قرار نیست عالی باشه!
شما دارید به کاربر پیشنهاد می کنید برای به دست آوردن مقدار صحیح یک عدد اعشاری، آن را تبدیل به string کنه، بعد با استفاده از تابع Format روی آن string پردازش انجام بده، در حالی که برای این کار توابع استانداردی وجود دارند که مستقیما بر روی داده اعشاری، بدون نیاز به تبدیل نوع، کار می کنند.

لقمه غذا را میشه قبل از بلعیدن چند بار دور سر چرخاند، ولی به چرخاندن لقمه دور سر قبل از بلعیدن نمیگن "عالی"!

DLL_DLL
چهارشنبه 13 آبان 1388, 00:16 صبح
نه ، ایشون گفت کار نمیده!!!!!!! بنده گفتم خیلی عالی کار میده. ایشون مثال زد رو اعداد منفی!
من نگفتم کد عالیه! گفتم عالی کار میده!
درخواست کننده تاپیک هم گفت ، میخوام پیدا کنم جز صحیح را. منم روش جدا کردن را گفتم.
جناب آقای علیرضا هم توسط رند کردن عدد اینکارو کردن.
من نگفتم ایشون اشتباه گفتن ، ایشون به روش کار من گیر دادن.
ایشون می گفت خروجی دستور format اشتباه.در صورتی که نبود. ، منم گفتم خیلی هم عایی کار میکنه.
تازه روشی که بنده گفتم تابعی بود که خیلی جاهای دیگه هم بدردشون میخوره.

تازه بنده که نگفتم کد من بهترین هست!! من اینو بلد بودم ، و به ایشون گفتم! اگه جناب آقای علیرضا زودتر گفته بود ، شاید reply نمی دادم یا اگه می دادم ، می گفتم این روش علیرضا بری بهتره ، اما این روش هم هست.



به هر حال دستور format از لحاظ کد نویسی اونقدر بیشتر و سخت تر نیست که لقمه دور سر پیچوندن باشه.
خوبیش اینکه اگر زمانی خواستن هم می تونن تا هر رقم اعشار را خواستن انتخاب کنن.
البته شاید تابعی مخصوص اینکار باشه اما من از این روش استفاده می کنم.

farzane_fn
چهارشنبه 13 آبان 1388, 00:40 صبح
خیلی چیزها ممکن هست که کار بده، ولی هر چیزی که کار بده قرار نیست عالی باشه!
شما دارید به کاربر پیشنهاد می کنید برای به دست آوردن مقدار صحیح یک عدد اعشاری، آن را تبدیل به string کنه، بعد با استفاده از تابع Format روی آن string پردازش انجام بده، در حالی که برای این کار توابع استانداردی وجود دارند که مستقیما بر روی داده اعشاری، بدون نیاز به تبدیل نوع، کار می کنند.

لقمه غذا را میشه قبل از بلعیدن چند بار دور سر چرخاند، ولی به چرخاندن لقمه دور سر قبل از بلعیدن نمیگن "عالی"!
دوست خوبم آقای "علی کشاورز".با سلام.
قبل از هر چیزی از شما تشکر می کنم و خواستم یه مشورتی با شما کرده باشم.من قبلا دلفی کار می کردم.دلفی رو هم تا جاهای خوبی پیش برده بودم.تا حدی که با sql توش برنامه می نوشتم.ولی خوب هنوز چیزهای خیلی زیادی هست که یاد نگرفتم.حالا اومدم سراغ سی شارپ. و قصد دارم سی شارپ و دلفی رو با همدیگه ادامه بدم.چون احساس می کنم سی شارپ هم خیلی می تونه مفید باشه و خیلی دوست دارم دو زبان برنامه نویسی بدونم.لطفا منو راهنمایی کنین.. باتشکر.

vcldeveloper
چهارشنبه 13 آبان 1388, 06:41 صبح
حالا اومدم سراغ سی شارپ. و قصد دارم سی شارپ و دلفی رو با همدیگه ادامه بدم.چون احساس می کنم سی شارپ هم خیلی می تونه مفید باشه و خیلی دوست دارم دو زبان برنامه نویسی بدونم.لطفا منو راهنمایی کنین.. باتشکر. سلام، این سوال شما مربوط به این تاپیک نمیشه. اگر جواب کوتاه و مختصر میخواید؛ کار خوبی می کنید که هر دو رو یاد می گیرید.

alireza_tavakol
چهارشنبه 13 آبان 1388, 08:40 صبح
نه ، ایشون گفت کار نمیده!!!!!!! بنده گفتم خیلی عالی کار میده. ایشون مثال زد رو اعداد منفی!


دوست عزیز من باز هم سر حرفم هستم تابع format به عنوان تابع جز صحیح کار نمی ده شما می تونی با یک عدد منفی تستش کنی

من اولین پستی که دادم از شما تشکر کردم و در ادامه فقط به تابع floor اشاره کردم ولی بعد از 20 دقیقه فکر کردن دلیل نقضش رو پیدا کردم و پستم رو اصلاح کردم ...

درضمن خیلی خوبه که یک درخواست با پاسخ های مختلف روبرو بشه و خیلی خوبه که راه های اشتباه عنوان بشه:چشمک:

اَرژنگ
چهارشنبه 13 آبان 1388, 08:57 صبح
درضمن خیلی خوبه که یک درخواست با پاسخ های مختلف روبرو بشه و خیلی خوبه که راه های اشتباه عنوان بشه:چشمک:

کاملا موافقم، همه ما اینجا جمع شدیم که یک چیزی یاد بگریم، اگر روشی که استفاده میکنم اشتباه است و یا کم و کسری دارد و یا اینکه یک روش بهتر و یا متفاوت که در شرائط دیگر جواب میده و یا به دانائی خودمان و دیگران اضافه میکنه وجود دارد باید گفته بشه. از اینکه با روشهایه اشتباه پیش بریم بدتر چیزی نیست . هیهات منا الذله.

DLL_DLL
چهارشنبه 13 آبان 1388, 14:31 عصر
بنده از زبانهای .net بیزارم ، علاقه ای به تسط در آنها ندارم اما دیگه یکمی را بلد هستم.
یا کامپایلر شما خرابه علیرضا جان ، یا کامپایلر من زیادی درسته!

حالا که نمیخوای کوتاه بیای هم سورسو برات گذاشتم ، هم عکس از خروجی!
اگر کسی دیگه هم تست کرده بیاد خروجیشو اعلام کنه.

اَرژنگ
چهارشنبه 13 آبان 1388, 14:57 عصر
بنده از زبانهای .net بیزارم ، علاقه ای به تسط در آنها ندارم اما دیگه یکمی را بلد هستم.
یا کامپایلر شما خرابه علیرضا جان ، یا کامپایلر من زیادی درسته!

حالا که نمیخوای کوتاه بیای هم سورسو برات گذاشتم ، هم عکس از خروجی!
اگر کسی دیگه هم تست کرده بیاد خروجیشو اعلام کنه.
مشکل اصلی ربطی به زبان ندارد، من ۷ سال دلفی کار کردم و قبلش پی‌اچ‌پی و ....
مشکل اصلی ، مشکل مفهومی است، قسمت صحیح یک عدد باید عدد باشد، متد فرمت عدد برنمیگرداند، رشته برمیگرداند (این مطلب در پست جناب کشاورز گفته شده بود).
حتی اگر برنامه‌نویسی را هم بزاریم کنار ، در ریاضیات فانکش فلور و سیلینگ به همین معنا بکار میرند.
به جایه اینکه از زبانهایه دات‌نت بیزار باشید برید خدا را شکر که کنید که چه نعمتی در دستتان هست و قدرش را نمیدانید، قبل از دات نت، دست برنامه‌نویسها بسته بود، قدرتی که دات نت در دستتان قرار داده را استفاده نکنید از دست دادید.
اگر چیزهایی که در سی‌شارپ ۲۰۱۰ درمیاد در ۱۹۸۰ موجود بود :گریه:

alireza_tavakol
چهارشنبه 13 آبان 1388, 15:20 عصر
بنده از زبانهای .net بیزارم ، علاقه ای به تسط در آنها ندارم اما دیگه یکمی را بلد هستم.
یا کامپایلر شما خرابه علیرضا جان ، یا کامپایلر من زیادی درسته!

حالا که نمیخوای کوتاه بیای هم سورسو برات گذاشتم ، هم عکس از خروجی!
اگر کسی دیگه هم تست کرده بیاد خروجیشو اعلام کنه.

من همیشه از افرادی که از نظرشون دفاع می کنم خوشم می یومده ( احسنت ):قلب::بوس:

دوست عزیز شما به پست من دقت نکردن مثالی که من زدم این بوده
double I = -25.9;
MessageBox.Show(String.Format("{0:n0}", I));
تابع Format Strin عدد را به سمت کف گرد میکند
چون عدد 25.333- به سمت پایین گرد میشود خروجی 25- است ولی اگه با عدد 25.9- تست کنی به اشتباهت پی میبری:لبخندساده:

DLL_DLL
چهارشنبه 13 آبان 1388, 15:27 عصر
من همیشه از افرادی که از نظرشون دفاع می کنم خوشم می یومده ( احسنت ):قلب::بوس:

دوست عزیز شما به پست من دقت نکردن مثالی که من زدم این بوده
double I = -25.9;
MessageBox.Show(String.Format("{0:n0}", I));تابع Format Strin عدد را به سمت کف گرد میکند
چون عدد 25.333- به سمت پایین گرد میشود خروجی 25- است ولی اگه با عدد 25.9- تست کنی به اشتباهت پی میبری:لبخندساده:
آآآآآرژنگ جان ، این پست شما چه ربطی به بحث داشت ؟

من متوجه اینکه شما عدد را عوض کردید نشدم. حق با شما بود.ممنون!:بوس: