aboushaheen بتاريخ: 31 مارس 2008 تقديم بلاغ مشاركة بتاريخ: 31 مارس 2008 هذا الكود يقرب الارقام الي 0.25 ومضاعفاتها مثل 2253.21 يتم تقريبه الي 2253.25 وهكذا declare v_number number(10,2) :=&p_number;v_inte number(10);v_dcimal number(10,2);beginselect substr(v_number,-2 ,2) into v_inte from dual;if v_inte < 25 thenselect trunc(v_number,0)+0.25 into v_dcimal from dual;dbms_output.put_line(v_dcimal);elsif v_inte between 26 and 50 then select trunc(v_number,0)+0.50 into v_dcimal from dual;dbms_output.put_line(v_dcimal);elsif v_inte between 51 and 75 then select trunc(v_number,0)+0.75 into v_dcimal from dual;dbms_output.put_line(v_dcimal);end if ;end; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
amdabd بتاريخ: 31 مارس 2008 تقديم بلاغ مشاركة بتاريخ: 31 مارس 2008 السلام عليكمالاخ ابوشاهين الكود يقوم باضافة الكسر العشري 75 الي الارقام الصحيحةبمعني 555 تصبح 555.75 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
amdabd بتاريخ: 3 أبريل 2008 تقديم بلاغ مشاركة بتاريخ: 3 أبريل 2008 السلام عليكم SET SERVEROUTPUT ON: declarev_number number(10,2) :=&p_number;v_inte number(10);v_dcimal number(10,2);begin--if v_number-trunc(v_number,0) > 0 then--select substr(v_number,-2 ,2) into v_inte from dual;if v_inte < 25 thenselect trunc(v_number,0)+0.25 into v_dcimal from dual;dbms_output.put_line(v_dcimal);elsif v_inte between 26 and 50 thenselect trunc(v_number,0)+0.50 into v_dcimal from dual;dbms_output.put_line(v_dcimal);elsif v_inte between 51 and 75 thenselect trunc(v_number,0)+0.75 into v_dcimal from dual;dbms_output.put_line(v_number);end if ;--else dbms_output.put_line(v_number);end if ;end; الاخ العزيز بعد اضافة جملة if الملونة يمكننا بهذه الطريقة تلاشي اضافة الكسر العشري للارقام الصحيحة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
amdabd بتاريخ: 3 أبريل 2008 تقديم بلاغ مشاركة بتاريخ: 3 أبريل 2008 (معدل) الاخ العزيزماذا يحدث لو كان الكسر العشري 25 مثال 5.25 >> لن تعطي نتيجة لان قيمة v_inte في هذه الحالة = 25و لعلاج هذا الخطأ نقوم بإضافة = الي علامة > اي لتكون اصغر من او يساوي => if v_inte <= 25 then بدلا من if v_inte < 25 then---- لكن ماذا عن الكسور العشرية التالية0.9 , 0.90 , 0.3 , 0.30 , 0.5 , 0.50 , 0.51 طبعا اقصد الكسر العشري نفسه و ليس القيمة المذكورة تم تعديل 3 أبريل 2008 بواسطة amdabd اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
aboushaheen بتاريخ: 7 أبريل 2008 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 7 أبريل 2008 set serveroutput on ; declare v_number number(10,2) :=&p_number; v_dcimal number(10,2); begin if v_number - trunc(v_number) = 0 then dbms_output.put_line(v_number); else if v_number - trunc(v_number , 0) <= 0.25 then v_dcimal := trunc(v_number , 0 ) +0.25 ; dbms_output.put_line(v_dcimal); elsif v_number - trunc(v_number , 0) between 0.26 and 0.50 then v_dcimal := trunc(v_number , 0 ) +0.50 ; dbms_output.put_line(v_dcimal); elsif v_number - trunc(v_number , 0) between 0.51 and 0.75 then v_dcimal := trunc(v_number , 0 ) +0.75 ; dbms_output.put_line(v_dcimal); end if ; end if ; end; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.