| 

.NET C# Java Javascript Exception

2
ich habe folgenden F# code:
let ScalePoint (pointOnWindow : Point) (windowSize : Size) : Point =
new Point
(
X = pointOnWindow.X / (windowSize.Width * 0.5),
Y = pointOnWindow.Y / (windowSize.Height * 0.5)
);

und ein kleines Problem damit. der Teil "0.5" wird unterstriechen und der Fehler aus dem Titel wird Angezeigt:
The type 'float' does not match the type 'int'

ich suche und suche und kann nicht finden wie ich diesen int in ein float umwandeln kann :| bitte helft mir ;)
25.03.2011
pinchbeck 373 1 8
4 Antworten
3
geht das vielleicht so:

let ScalePoint (pointOnWindow : Point) (windowSize : Size) : Point =
new Point
(
X = pointOnWindow.X / (float windowSize.Width * 0.5),
Y = pointOnWindow.Y / (float windowSize.Height * 0.5)
);
25.03.2011
nabuchodonossor 1,3k 5
nope :( float eingeklammert auch nicht, das habe ich als erstes ausprobiert
pinchbeck 25.03.2011
für diejenigen die weiter nicht lesen möchten sage ich nur kurz, dass dieser Cast richtig ist der Code selbt aber nicht vollständing und deswegen dachte ich im ersten Moment der Cast sei falsch.
pinchbeck 25.03.2011
1
Wie wäre es stattdessen damit?
let ScalePoint (pointOnWindow : System.Drawing.Point) (windowSize : System.Drawing.Size) : System.Drawing.Point =
new System.Drawing.Point
(
X = pointOnWindow.X * 2 / (windowSize.Width ),
Y = pointOnWindow.Y * 2 / (windowSize.Height)
);


Das braucht keinen cast.
25.03.2011
Jürgen Luhr 7,1k 2 9
auf jeden Fall viel angenehmer für die Augen... leider gibt es in meinem code einen Bug und ich kann nicht den int nehmen denn der Wert muss zwischen 0-1 liegen, die richtige und komplete Lösung unten.
pinchbeck 25.03.2011
0
cool, es funktioniert, ich brauchte doch noch zwei casts ;P in C# wäre das selbstverständlich und in F# habe ich irgendwie nicht darüber gedacht:

let ScalePoint (pointOnWindow : Point) (windowSize : Size) : Point =
new Point
(
X = int (float pointOnWindow.X / (float windowSize.Width * 0.5)),
Y = int (float pointOnWindow.Y / (float windowSize.Height * 0.5))
);
25.03.2011
pinchbeck 373 1 8
0
hier die richtige Lösung, mit PointF, sonst bekommt man immer die 0 zurück
let ScalePoint (pointOnWindow : Point) (windowSize : Size) : PointF =
new PointF
(
X = float32 pointOnWindow.X / (float32 windowSize.Width * 0.5f),
Y = float32 pointOnWindow.Y / (float32 windowSize.Height * 0.5f)
);
25.03.2011
pinchbeck 373 1 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH