آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل در محاسبات وقتی زبان گوشی فارسیه

shahkar_ir  11 سال پیش  10 سال پیش
+1 0

سلام دوستان

 

درس ماشین حساب استاد که یادتونه

 

وقتی زبان گوشی انگلیسیه برنامه مشکل نداره اما وقتی زبانش فارسیه خطای exceptionnumberformat داره  مثلا شما عدد 6.55 را وارد میکنید متغیر 6,55 ذخیره میشه  یعنی بجای .  کاما میخوره و اعداد فارسی میشن که تو محاسبات تشخیص نمیده فارسی و از فرمتش خطا میده.

 

در ضمن من روی اندروید استودیو ساختم برنامه رو.

 

یک راه حلشو پیدا کردم که در ابتدای اجرای برنامه Locale برنامه رو us ست کنیم.اما راه حل درستش فکر نکنم این باشه

 مثلا تو عکس زیر من 6.55 را وارد کردم ببینید چون زبان فارسیه به چی تبدیل شده و تو محاسبات نمیتونه تشخیص بده فارسیه و فورس کلوز میشه

دوستان راه حلی بلدید؟

0 0
لطفا یه نگاه به این تاپیک هم بندازید (11 سال پیش)
0 0
دوست من کمی شکیبا باشید تا به جواب برسید. لطفا کدتون را قرار دهید ببینیم چه کار کرده اید. احتمالا مقدار خوانده شده از باکس را درست کست نکرده اید یا اگر تنظیماتی برای زبان اعمال کرده اید، اشکالی ایجاد نموده اید. (11 سال پیش)
0 0
برنامه وقتی زبان گوشی رو انگلیسیه مشکلی نداره ولی وقتی فارسیه چون اعداد و پوینت(.) بصورت کاما ذخیره میشه ایجاد اشکال می کنه (11 سال پیش)
+1 0
1- آیا در برنامه فونتی لحاظ کرده اید؟ اگر اینطور است برای باکس مربوطه با حذف آن یکبار تست کنید. 2- آیا کیبورد انحصاری نوشته اید؟ اگر اینطور است به آن شک کنید. 3- زبان را در داخل برنامه تغییر می دهید؟ اگر اینطور است چگونگی آن را ذکر کنید و اینکه روی این تکست باکس تغییر خاصی اعمال می کنید و یا خیر؟4- آیا کیبورد ورودی اطلاعات را محدود به ورود اعداد کرده اید؟ این کار ممکن است مشکل شما را از ورود کاراکتر های متفرقه مرتفع سازد. 5- آیا از نحوه صحیح کست کردن اطلاعات خود مطمئن هستید؟ (11 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
مجتبی یگانه  11 سال پیش
+3 0

توجه کنید که مشکل شما با روش ابتکاری خودتون یعنی Replace کاما با نقطه قابل حل بود ، اما اگر روش استاندارد اش رو بخواین ، باید از Locale ها استفاده کنید ، در واقع Locale ها در اندروید اجازه میدند که با واحد های و نماد های محلی هم بتونید پردازشی رو انجام بدید ، مثلا در مورد شما این لینک کمک تون میکنه .

و این هم یک نمونه کد :

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("1,234");
double d = number.doubleValue();
0 0
با تشکر از کمکتون.هنوز تست نکردم.ولی من برای رفع مشکل در ابتدای Activity کد Locale رو برابر US ست کردم مشکل حل شد.اما ظاهرا این مشکل مربوط به Android Studio هستش و در اکلیپس مشکل نداره. در پاسخ دوست خوبمون آقا حامد هم عرض کنم که از هیچگونه موارد سفارشی مثل فونت یا کیبورد استفاده نکردم (11 سال پیش)
0 0
یک مورد دیگه هم عرض کنم مشکل فقط پوینت(.) نیست چون اعداد هم فارسی می شدند و آن هم باعث اشکال می شد. در اولین فرصت کدی که مشکل را حل کرد می ذارم. (11 سال پیش)
+1 0
دقیقا ! ، من فقط یه نمونه کد بهتون دادم و خوشحالم که یکمی بهتون کمک کرد ، نه این مشکلی نیست که فقط تو محیط توسعه ی خاصی پیش بیاد ! ، تو دستگاه هایی که زبان اول شون فارسی هست این مشکل به وجود میاد :) ، همون طور که گفتید بهترین راه ، locale کردن اش به US یا زبانی نزدیک به املای واحد پولی مورد نظر هست (11 سال پیش)
پاسخ به سوال 
shahkar_ir  11 سال پیش
+2 0

سلام دوستان گلم

من از کد زیر استفاده کردم.اگه راه حل بهتری دارید دریغ نکنید.

         Configuration config = new Configuration();
        config.locale = Locale.US;
        Locale.setDefault(Locale.US); // has no effect
        Resources res = getApplicationContext().getResources();
        res.updateConfiguration(config, res.getDisplayMetrics());
 
پاسخ به سوال 
arshadtehrani  10 سال پیش
0 0

سلام دوستان

من روش های مشابه ای که دوستان ذکر کرده بودند را امتحان کردم ولی 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;
    }

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .