Ni som är duktiga på allt kring detta kan ni veirifera att jag inte glömt något

//New real estate
var purchasePrice = <insert>m;
var paidDownPayment = <insert>m;
var existingPantBrev = <insert>m;
var lagFart = purchasePrice * 0.015m;

//Old real estate
var soldFor = <insert>m;
var existingLoan = <insert>m;
var saleCosts = <insert>m;
var improvementCosts = <insert>m;
var postponedAmount = 3000000m;
var purchasePriceOld = <insert>m;
var tax = (soldFor - purchasePriceOld - saleCosts - improvementCosts-postponedAmount) * 0.22m;

var savings = <insert>m;


var calculatedLoan = (purchasePrice-paidDownPayment)*0.5m;
decimal deviation;

do
{
var pantBrev = (calculatedLoan - existingPantBrev) * 0.02m;
var remainingToPay = purchasePrice - paidDownPayment-savings;

var moneyFromOldEstate = soldFor - tax - existingLoan - pantBrev - lagFart-saleCosts;
var loan = remainingToPay - moneyFromOldEstate;
deviation = calculatedLoan - loan;
calculatedLoan = loan;

} while (Math.Abs(deviation) > 0.000001m);

Console.WriteLine($"Lånet blir {Math.Round(calculatedLoan):C}");

edit: hade glömt dra av försälningskostnad från inkomsteerna
 
Redigerat:
  • Haha
cpalm
  • Laddar…
T
Du definierar en variabel (postponedAmount ) som inte används i resten av programmet.

Sen undrar jag lite över din loop. Den kommer att göra saker första varvet men sen sker ingen förändring i beräkningarna så om villkoret inte är uppfyllt första varvet och den ska köra en gång till så kommer den aldrig att sluta. (iaf så vitt jag kan tolka koden... :) )
 
T Testarn skrev:
Du definierar en variabel (postponedAmount ) som inte används i resten av programmet.

Sen undrar jag lite över din loop. Den kommer att göra saker första varvet men sen sker ingen förändring i beräkningarna så om villkoret inte är uppfyllt första varvet och den ska köra en gång till så kommer den aldrig att sluta. (iaf så vitt jag kan tolka koden... :) )
Snyggt, den försvann när jag gjorde en ändring :p Påverkar lånet rätt fett :p

Det viktiga från före och i loopen

var calculatedLoan = (purchasePrice-paidDownPayment)*0.5m; //Uppskattat lån

//loop
var pantBrev = (calculatedLoan - existingPantBrev) * 0.02m; //Första vändan berälnas pantbrev på uppskattat lån
deviation = calculatedLoan - loan; //Avikelse från förra vändan
calculatedLoan = loan; //Spar ny uträknad lån

} while (Math.Abs(deviation) > 0.000001m); kör koden till avikelse är accepterbar
 
Du får kanske förklara lite hur du tänker (saknar kommentarer i koden).

tax, där bör du väl göra avdrag för lagfartsavgifter som du betalade när du köpte.

Vad har pantbrev och lagfart med moneyFromOldEstate att göra? Borde väl läggas till remainingToPay?
 
H hempularen skrev:
Du får kanske förklara lite hur du tänker (saknar kommentarer i koden).

tax, där bör du väl göra avdrag för lagfartsavgifter som du betalade när du köpte.

Vad har pantbrev och lagfart med moneyFromOldEstate att göra? Borde väl läggas till remainingToPay?
Snurran är ju rätt hårt kopplat till min situaion. Jag har inget pantberv eller lagfart på bef då det är en brf.
Jag drar av pantbrev och lagfart då dessa ska betalas. Men kanske mer semantiskt korrekt lägga dem på remainingToPay istället. Utfallet blir samma
 
Jag som är uppvuxen med C hatar verkligen var som variabel, men annars kan jag titta lite i helgen, sitter och kompilerar C# nu så man får en stund väntan ibland
 
  • Gilla
hempularen
  • Laddar…
V Ville_Vessla skrev:
Jag som är uppvuxen med C hatar verkligen var som variabel, men annars kan jag titta lite i helgen, sitter och kompilerar C# nu så man får en stund väntan ibland
Jag älskar var, gör koden mer läsbar. Speciellt med generics som vid LINQ-utryck osv..
 
AndersMalmgren AndersMalmgren skrev:
Snurran är ju rätt hårt kopplat till min situaion. Jag har inget pantberv eller lagfart på bef då det är en brf.
Jag drar av pantbrev och lagfart då dessa ska betalas. Men kanske mer semantiskt korrekt lägga dem på remainingToPay istället. Utfallet blir samma
Jag inser att det ger samma resultat, men för läsligheten bör det ju läggas på rätt ställe, tycker jag. Det hade aldrig klarat en kodgranskning i vårt projekt där jag har uppdrag nu.
 
  • Gilla
Dilato
  • Laddar…
AndersMalmgren AndersMalmgren skrev:
Jag älskar var, gör koden mer läsbar. Speciellt med generics som vid LINQ-utryck osv..
Jag gillar inte heller Linq, men man måste anpassa sig, nån annan äger företaget sen rätt länge så jag kan tyvärr inte bestämma, bara komma med förslag. Jag vill göra allt från grunden och vill använda vad det kallas hungarian notation. Den behöver inte vara helt korrekt men för att direkt se om det är sträng, heltal , flyttal eller nån array utan att behöva ha romaner till namn eller förlita sig på miljön man använder. Men jag lär väl vara en dinosaurie i detta .
 
V Ville_Vessla skrev:
Jag gillar inte heller Linq, men man måste anpassa sig, nån annan äger företaget sen rätt länge så jag kan tyvärr inte bestämma, bara komma med förslag. Jag vill göra allt från grunden och vill använda vad det kallas hungarian notation. Den behöver inte vara helt korrekt men för att direkt se om det är sträng, heltal , flyttal eller nån array utan att behöva ha romaner till namn eller förlita sig på miljön man använder. Men jag lär väl vara en dinosaurie i detta .
Hur kan du inte gilla Linq. Mycker mer läsbar kod :D
Om man inte förstår vad en variabel har för datatyp eller att det är relevant för att förstå koden så behöver koden skrivas om för att vara mer läsbar.
Likadant med kommentarer, behöver koden kommentarer så bör den skrias om så den är mer förstålig. Nu skrev jag två kommentarer ovan för detta är inte produktionskod utan en snabb snippet jag skrev.

Om nan måste skriva en kommentar så ska det vara varför man gjorde en viss grej inte hur. Hur är koden.
 
AndersMalmgren AndersMalmgren skrev:
Jag älskar var, gör koden mer läsbar. Speciellt med generics som vid LINQ-utryck osv..
I sådana här sammanhang kanske "var" duger, Men i verkliga livet behöver man ha bättre koll på vad det är för datatyper man hanterar, och ha koll på hur olika typer beter sig vad gäller avrundningar (ex. så avrundas -2,5 till heltal olika av olika kompilatorer, found the hard way).

Även trunkeringar. För många år sedan hittade jag en bugg i signalbehandlingskod (jag skriver inte algoritmer, men implementerar ex. dataflöde till och från filter/equalizer algoritmer). En kille hade implementerat en integrator (energidetektor/ lågpass filter), genom att ta en ström av flyttals samples, stoppa in dem i en ringbuffert med 256 element. varje sample kvadrerades (spänning till energi) och adderades till ett ackumulatorregister. samtidigt tog man bort det äldsta samplet ur bufferten och subtraherade det från ackumulator registret (kvaderart). Ackumulatorn innehåller då summan av energi från 256 samples. Lätt att förstå.

Nåväl vad händer då om vi får en ström med en miljard noll samples, följt av en mijard samples med hög energi, och sedan ytterligare en miljard noll samples. Till slut bör det ju vara noll energi eller hur?

Ledtråd: flyttal

Någon som kommer på "haken"?
 
  • Haha
cpalm
  • Laddar…
H hempularen skrev:
I sådana här sammanhang kanske "var" duger, Men i verkliga livet behöver man ha bättre koll på vad det är för datatyper man hanterar, och ha koll på hur olika typer beter sig vad gäller avrundningar (ex. så avrundas -2,5 till heltal olika av olika kompilatorer, found the hard way).

Även trunkeringar. För många år sedan hittade jag en bugg i signalbehandlingskod (jag skriver inte algoritmer, men implementerar ex. dataflöde till och från filter/equalizer algoritmer). En kille hade implementerat en integrator (energidetektor/ lågpass filter), genom att ta en ström av flyttals samples, stoppa in dem i en ringbuffert med 256 element. varje sample kvadrerades (spänning till energi) och adderades till ett ackumulatorregister. samtidigt tog man bort det äldsta samplet ur bufferten och subtraherade det från ackumulator registret (kvaderart). Ackumulatorn innehåller då summan av energi från 256 samples. Lätt att förstå.

Nåväl vad händer då om vi får en ström med en miljard noll samples, följst av en mijard samples med hög energi, och sedan ytterligare en miljard noll samples. Till slut bör det ju vara noll energi eller hur?

Ledtråd: flyttal

Någon som kommer på "haken"?
I alogritmer och maskinkod close to the metal sure. Men i vanlig domänkod behövs det ej. där är det bara negativt. Och du kan alltid se typen via IDE.

Men nu flyter vi iväg från bostads försäljning/köp :D
 
  • Gilla
hempularen
  • Laddar…
btw i C# får du fel om du försöker använda olika primitiva datatyper :D

Kodexempel i C# som visar fel vid användning av olika primitiva datatyper.
 
Jag gillar inte fasta värden i koden, jag deklarerar alltid sådant som #define eller const eller vad nu språket har så man får ett namn att förstå vad värdet är för något.
AndersMalmgren AndersMalmgren skrev:
var lagFart = purchasePrice * 0.015m;
AndersMalmgren AndersMalmgren skrev:
saleCosts - improvementCosts-postponedAmount) * 0.22m;
AndersMalmgren AndersMalmgren skrev:
var calculatedLoan = (purchasePrice-paidDownPayment)*0.5m;
 
D Dilato skrev:
Jag gillar inte fasta värden i koden, jag deklarerar alltid sådant som #define eller const eller vad nu språket har så man får ett namn att förstå vad värdet är för något.
Man blir lat när man skriver små snurror för sig sig själv. Hade jag använt den på två ställen hade jag gjort det utan att tänka. const heter det i C#

const decimal lagfartRate = 0.015m;

edit: ms får fixa så man kan använda var här!
 
Vi vill skicka notiser för ämnen du bevakar och händelser som berör dig.