الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

التقريب الى اقرب ربع جنيه

Featured Replies

بتاريخ:

السلام عليكم أخوانى اعضاء هذا المنتدى الذى افضاله عليا كثيره جداً

انا عندى مشكله وهى اريد التقريب الى اقرب ربع جنيه فلا أستطيع ذلك عن طريق round
مثال يوضح ذلك
الرقم 25.33 يتم تقريبه لاقرب ربع جنيه الى 25.50
الرقم 25.15 يتم تقريبة الى اقرب ربع جنيه الى 25.25
الرقم 25.60 يتم تقريبه الى اقرب ربع جنيه الى 25.75
السؤال هل توجد دالة ممكن ان تقرب الى اقرب ربع جنيه
ارجو من اعضاء المنتدى مساعدتى فى ذلك

بتاريخ:

بحد علمي لا يوجد function جاهز للتقريب الى ربع ولكن تستطيع استخدام ما يلي


لأقرب ربع (أقرب ربع الى الرقم سواء كان أكبر منه أو اصغر)
select round(6.60 * 4 ,0) /4 from dual

بحيث تعطي أقرب ربع الى الرقم
6.15 الى 6.25
6.33 الى 6.25
6.60 الى 6.50


أما لإعطائك النتائج التي تريد فأنت تحتاج أن تقرب الى أكبر ربع قريب من الرقم
وهنا تستخدم ceil

select ceil(6.60 * 4 ) /4 from dual

6.15 الى 6.25
6.33 الى 6.50
6.60 الى 6.75


وللعلم لأخذ أقرب أصغر ربع

select floor(6.60 * 4 ) /4 from dual

6.15 الى 6.00
6.33 الى 6.25
6.60 الى 6.50

تم تعديل بواسطة tanbet

بتاريخ:
  • كاتب الموضوع

جزاك الله خير اخى الكريم
الحل مثالى
شكراً

بتاريخ:

جزاكم الله خيرا

بتاريخ:

وعليكم السلام ورحمة الله وبركاته
لا أعرف إن كان هناك دالة فى أوراكل تقوم بهذا العمل
ولكن يمكن عمل داله تقوم بحساب الكسر الموجود فى الرقم كالتالى :


[left]
FUNCTION APPROXIMATE_TO_QRTR ( V_PRICE IN NUMBER ) RETURN NUMBER 
IS

V_PRICE_WITHOUT_FRAC NUMBER;
V_FRACTION NUMBER;
V_NEW_PRICE NUMBER;

BEGIN

V_PRICE_WITHOUT_FRAC  := TRUNC(V_PRICE);

V_FRACTION := V_PRICE - V_PRICE_WITHOUT_FRAC ;

IF NVL(V_FRACTION,0)  > 0 AND NVL(V_FRACTION,0) < 0.25 THEN
  
  V_NEW_PRICE := V_PRICE_WITHOUT_FRAC + 0.25;
  
ELSIF NVL(V_FRACTION,0)  > 0.25 AND NVL(V_FRACTION,0) < 0.50 THEN
  
     V_NEW_PRICE := V_PRICE_WITHOUT_FRAC + 0.50;

ELSIF NVL(V_FRACTION,0)  > 0.50 AND NVL(V_FRACTION,0) < 0.75 THEN
  
     V_NEW_PRICE := V_PRICE_WITHOUT_FRAC + 0.75;
	 
ELSIF NVL(V_FRACTION,0)  > 0.75 THEN  
  
     V_NEW_PRICE := V_PRICE_WITHOUT_FRAC + 1 ;
	 
END IF;

RETURN NVL(V_NEW_PRICE ,0) ;

END;[/left]



ففى هذه الدالة نقوم باستخراج الكسر من الرقم ونحدد موقعة بين ما سيتم التقريب الية من الكسور (0.0 - 0.25 - 0.50 - 0.75 )
ثم نقوم بجمع الرقم بدون الكسر على الحد الجديد

ويمكن استدعاء الدالة كالتالى :



[left]DECLARE

NUM NUMBER;

BEGIN

 NUM := APPROXIMATE_TO_QRTR(25.33) ;

END;

[/left]

بتاريخ:

create or replace function roundno (no number) return number is
x number(10,2);
z number;
n number(10,2);
begin
n:=round(no,2);
select substr(n,instr(n,'.')+1,2) into z from dual;
if z between 0 and 25 then 
x:=trunc(n,0)+.25;
elsif z between 26 and 50 then
x:=trunc(n,0)+.5;
elsif z between 51 and 75 then
x:=trunc(n,0)+.75;
elsif z between 76 and 99 then
x:=trunc(n,0)+1;
end if;
return (x);
end;



لكن الحل الاول حل محترم جدا

بتاريخ:
  • كاتب الموضوع

والله انا مش عارف اقول اه للإهتمام المبالغ فية من اعضاء هذا المنتدا
وجزاكم الله جميعاً خيراً

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.