مشکل در محاسبات وقتی زبان گوشی فارسیه
سلام دوستان
درس ماشین حساب استاد که یادتونه
وقتی زبان گوشی انگلیسیه برنامه مشکل نداره اما وقتی زبانش فارسیه خطای exceptionnumberformat داره مثلا شما عدد 6.55 را وارد میکنید متغیر 6,55 ذخیره میشه یعنی بجای . کاما میخوره و اعداد فارسی میشن که تو محاسبات تشخیص نمیده فارسی و از فرمتش خطا میده.
در ضمن من روی اندروید استودیو ساختم برنامه رو.
یک راه حلشو پیدا کردم که در ابتدای اجرای برنامه Locale برنامه رو us ست کنیم.اما راه حل درستش فکر نکنم این باشه
مثلا تو عکس زیر من 6.55 را وارد کردم ببینید چون زبان فارسیه به چی تبدیل شده و تو محاسبات نمیتونه تشخیص بده فارسیه و فورس کلوز میشه
دوستان راه حلی بلدید؟
توجه کنید که مشکل شما با روش ابتکاری خودتون یعنی Replace کاما با نقطه قابل حل بود ، اما اگر روش استاندارد اش رو بخواین ، باید از Locale ها استفاده کنید ، در واقع Locale ها در اندروید اجازه میدند که با واحد های و نماد های محلی هم بتونید پردازشی رو انجام بدید ، مثلا در مورد شما این لینک کمک تون میکنه .
و این هم یک نمونه کد :
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("1,234");
double d = number.doubleValue();
سلام دوستان گلم
من از کد زیر استفاده کردم.اگه راه حل بهتری دارید دریغ نکنید.
Configuration config = new Configuration();
config.locale = Locale.US;
Locale.setDefault(Locale.US); // has no effect
Resources res = getApplicationContext().getResources();
res.updateConfiguration(config, res.getDisplayMetrics());
سلام دوستان
من روش های مشابه ای که دوستان ذکر کرده بودند را امتحان کردم ولی 100 درصدی نیست و بازم گاها مشکلاتی پیش امده من خودم از کد زیر استفاده می کنم و جواب گرفتم
public static String toStandardNumber(String strNumberParam) {
strNumberParam = strNumberParam.replace("۰", "0");
strNumberParam = strNumberParam.replace("۱", "1");
strNumberParam = strNumberParam.replace("۲", "2");
strNumberParam = strNumberParam.replace("۳", "3");
strNumberParam = strNumberParam.replace("۴", "4");
strNumberParam = strNumberParam.replace("۵", "5");
strNumberParam = strNumberParam.replace("۶", "6");
strNumberParam = strNumberParam.replace("۷", "7");
strNumberParam = strNumberParam.replace("۸", "8");
strNumberParam = strNumberParam.replace("۹", "9");
strNumberParam = strNumberParam.replace("٫", ".");
return strNumberParam;
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
