💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ Nik
تغییر تایپ از int به double
M.shehneh Sh حل شده توسط M.shehneh Sh

تایپ عددی مثل 1001 را به صورت اینتجر تعریف می‌کنیم. سپس آن را می‌خواهیم به دابل تغییر دهیم. چرا با as تغییر نمی‌کند اما با استفاده از اضافه کردن 0.0 یا استفاده از .toDouble تغییر می‌کند؟
در واقع وقتی کد زیر را اجرا می‌کنم در بخش نخست، عنوان می‌کند که بله، نوع داده دابل هست اما با نوشتن خط آخر در کد زیر، موقع محاسبه، نوع داده را اینتجر گرفته و تقسیم را انجام نمی‌دهد؟
void main() {
var myName = 1001;
myName as double;
//double myName2 = myName.toDouble();
print(myName is double);
print (myName);
print (myName/=10);

}

 

در زبان Dart، `as` کاربرد خاصی دارد و برای تبدیل یک متغیر به نوع داده دیگر نیست. به عبارت دقیق‌تر، `as` برای casting (تبدیل نوع داده) به کار می‌رود و نوع اصلی متغیر تغییر نمی‌کند.

در کد شما، عبور از `myName as double` تنها یک عمل casting است و نوع اصلی `myName` تغییر نمی‌کند. بنابراین، عبارت `print(myName is double)` درست است چرا که `myName` به طور طبیعی عدد صحیح است، اما هیچ تغییری در نوع داده `myName` اعمال نمی‌شود و این عملیت تبدیل به دابل انجام نمی‌دهد.

در واقعیت، برای تبدیل `myName` به نوع داده دابل، شما باید از روش‌های دیگری مانند `toDouble()` استفاده کنید که در کد شما به‌صورت کامنت درج شده است یا می‌توانید از عبارت زیر استفاده کنید:

```dart
myName = myName.toDouble();
```

یا می‌توانید مقدار دیگری با نوع داده دابل تعریف کنید و مقدار `myName` را به آن اختصاص دهید:

```dart
double myName = myName;
```

هر یک از این روش‌ها می‌توانند مقدار `myName` را به نوع داده دابل تغییر دهند.

بهترین پاسخ
M.shehneh Sh ۰۹ مهر ۱۴۰۲، ۱۹:۳۵

خیلی ممنون.

Nik ۰۹ مهر ۱۴۰۲، ۲۰:۴۶