نقل قول: کار با مقادیر long
سلام و روز خوش
نقل قول:
در هر حالی از فرمت بندی مقدار دو رقم اعشار بعد از عدد صحیح همیشه 0 هستش.
چون fileSize و 1024 هر دو صحیح هستن، نتیجه هم بصورت صحیح برمیگرده.
بجای 1024 بنویسین 1024.0 تا نتیجه بصورت float (در واقع double) برگرده و اعشار داشته باشین:
//file size between 999 and 102400 byte in KB[/VB][VB]
if (fileSize >= 1024 & fileSize < 102400)
return (fileSize / 1024.0).ToString("n2") + (addUnit == true ? " KB" : string.Empty);
نقل قول: کار با مقادیر long
نقل قول:
در آخرین بخش از تبدیلات، نتیجه تقسیم هرگز در متغیر ذخیره نمیشه و 0 هستش در صورتی که در خطی که مستقیم return انجام شده مقدار fileSize مقدار داره. در کل متغیر های a همیشه 0 هستد و اصلا مقدار ندارند و دلیلش را هم نمیدونم.
همون داستان اینجا هم هست،
و البته مقادیری از fileSize میتونه کمتر از 1048576 باشه و نتیجه کمتر از 1 هست و اینجوری a0 مقدارش صفر میشه.
پس هم مقدار ثابت رو بجای صحیح، اعشاری کنین و هم a2 رو double تعریف کنین.
نقل قول: کار با مقادیر long
سلام. ممنون مشکلم حل شد.
فقط سوالم این هستش که اگر متغیر نهایی اعشارپذیر نباشه مگر narrowing انجام نمیشه؟ چون به غیر از اعشار، مقدار صحیح هم در متغیر ذخیره نمیشد.
نقل قول: کار با مقادیر long
سلام دوباره
اون مقادیر حتما کمتر از 0 بوده، if رو چک کنین!
نقل قول:
و البته مقادیری از fileSize میتونه کمتر از 1048576 باشه و نتیجه کمتر از 1 هست و اینجوری a0 مقدارش صفر میشه.