PDA

View Full Version : inversعدد اعشاری



Roozbeh
سه شنبه 11 بهمن 1384, 20:28 عصر
سلام.
من میخوام یه برنامه بنویسم که یک عدد اعشاری رو بگیر و معکوس کنه.
اول گفتم با استفاده از حلقه do این عدد رو اینقدر در 10 ضرب کنم تا اعشارش از بین بره بعد معکوس کنم و بعد بر تعداد دفعاتی که تقسیم کردم ،تقسیم کنم.
اما نمیشه .
راه دیگهای هم به ذهنم نمیرسه.
خواهش میکنم راهنمایی کنید.

mostafa_cpp
سه شنبه 11 بهمن 1384, 23:42 عصر
منظورت کدوم حالته ؟

12.35 ---> 35.12

12.35 ---> 53.21

Roozbeh
چهارشنبه 12 بهمن 1384, 00:31 صبح
مثلا 21.36 تبدیل کنه به 12.63
قسمت صحیح شو با استفاده از تابع floor گرفتم و معکوس کردم.
برای قسمت اعشارش موندم.
راهنمایی لطفا.

mostafa_mn7
چهارشنبه 12 بهمن 1384, 01:12 صبح
خوب قسمت اعشاری رو با کم کردن اون صحیح از کل عدد به دست بیار دیگه!
مثلا"
number=12.36
floor=12
ashar=12.36-12

بعدش هم برای معکوس کردن ، میتونی یه تابع درست کنی.
هردوتای اینا رو بهش بدی...
بعد هم به هم وصل کنی.
خواستی مثال میزنم برات.

Roozbeh
چهارشنبه 12 بهمن 1384, 08:12 صبح
همینکارو کردم
الان قسمت صحیح رو با یک تابع معکوس کردم به این صورت که عدد رو تقسیم بر ده میکنمه و با بهقیمانده ضربدر ده قیلی جمع میکنه .
اما در مورد قسمت اعساری این کار رو نمیشه کرد.گفتم اینقدر ضربدر ده بشه تا یه عدد صحیح بشه بعد اونو هم معکوس کنم اما وقتی ضربدر ده میکنم خودش تا 15 رقم بعد ار اعشار میره جلو و کاری نداره عدد چند رقمی هست .
ممنون میشم اگه راهنمایی کنید.

mostafa_mn7
پنج شنبه 13 بهمن 1384, 01:01 صبح
واسه چی این کار رو میکنه؟

Roozbeh
پنج شنبه 13 بهمن 1384, 08:03 صبح
به نظر شما چکار کنم؟

seyedof
پنج شنبه 13 بهمن 1384, 09:49 صبح
سلام
دلیل اینکه تا 15 رقم اعشار میره جلو اینه که عدد شما رو double فرض کرده نه float. دلیلش میتونه این باشه که مثلا یه جایی نوشتید a /= 10.0; و این باعث میشه که به double تبدیل بشه. برای اینکه اکیدا بگین float است باید بنویسید a/=10.0f;
ممنون علی