Ωριαία Υπολογισμός των μισθών

ψήφοι
1

Έχω έναν πίνακα βάσης δεδομένων, όπως αυτό:

wagetable
 name     lowhours  highhours  wage 
 Default  0         40         10   
 Default  40        9999       15   
 Brian    0         40         15   
 Brian    40        50         20   
 Brian    50        9999       22   
 Chad     0         40         13   
 Chad     40        9999       17 

Αν 'ο Brian' εργαστεί 43.5151587 ώρες, θέλω να καταλάβω ότι έκανε (40 * 15) + (3.5151587 * 20) = 670,303174.

Αυτή είναι μια βάση δεδομένων SQLite, οπότε ξέρω ότι θα χρησιμοποιήσετε:

SELECT wage FROM wagetable WHERE name LIKE 'Brian' AND 'HourNum' BETWEEN lowhours AND highhours;

Με ένα συνδυασμό δαπέδου και% ... Είμαι απλά δεν θέτει τη λογική μαζί στο κεφάλι μου.

Παρακαλώ σημειώστε τις απαντήσεις σε C # και PHP αποδεκτή, όπως μπορεί να μετατρέψει τη λογική σε ό, τι χρειάζομαι. Ψάχνω για ψευδοκώδικα, αλλά θα δεχτούμε που τις απαντήσεις

Επεξεργασία: παρακαλώ σημειώστε ... Οι ώρες εργασίας δεν θα είναι ποτέ ένα ακριβές ακέραιο, γι 'αυτό ας επικάλυψη συμβεί.

Edit2:

Θέλω να πάρω ένα εργαζομένους συνολικές ώρες εργασίας (παράδειγμα: 43,5151587) και στη συνέχεια να συνειδητοποιήσουν ότι οι πρώτες 40 ώρες, ο ίδιος έκανε τυπική αμοιβή @ $ 15. Μια ώρα. έτσι (40 * 15) ... Στη συνέχεια εργάστηκε 3,5151587 ώρες των υπερωριών @ $ 20 Ο ώρα. έτσι (40 * 15), να προσθέσει σε αυτό (3.5151587 * 20) ... Το συνολικό ποσό που κέρδισε ήταν 670.303174

Δημοσιεύθηκε 16/08/2010 στις 11:01
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Από ό, τι κατάλαβα από τη θέση σας (psuedocode):

foreach pay_bracket p:
    if hours > p.length
        pay += p.length * p.pay
        hours -= p.length
    else
        pay += hours * p.pay
        end

Πού lengthείναι highhours- lowhours(και ότι ανήκουν σε επίπεδο αμοιβών είναι δίπλα το ένα στο άλλο, φυσικά).

Απαντήθηκε 16/08/2010 στις 11:11
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more