簡體   English   中英

使用F#將float和int乘以錯誤

[英]Error multipling float and int with F#

我已經定義了以下記錄:

type Ball =
    {
       center : Vector3<m> 
       radius : float32<m>
       color : Microsoft.Xna.Framework.Color 
    }

我正在嘗試以這種方式創建一個Ball列表:

let BallRadius = 0.2<m>
let list =
    [ for i in 0 .. 9 ->
        {
            center = { X = BallRadius + (float i) * BallRadius * 2.0 ; Y = 0.0<m>; Z = 0.0<m>}; //1 error
            radius = BallRadius; //1 error
            color = Microsoft.Xna.Framework.Color.White
        }

    ]

似乎在第一種情況下我是一個int,如果是浮點數,我不能相乘。 在第二種情況下,我不能將float指定給float32。 我怎么解決這個問題?

  1. 你不能通過整數浮動多次,所以你需要center = BallRadius + (float i) * BallRadius * 2.0
  2. radius = (float32 BallRadius) * 1.0f<m>有效,但我不確定它是最慣用的。

除此之外,我不清楚如何添加兩個BallRadius可以獲得Vector3<m> ,除非你的矢量只是一個浮點數......

[<Measure>] type m

type Vector3<[<Measure>] 'a> =
  {
    X : float32<'a>
    Y : float32<'a>
    Z : float32<'a>
  }

type Ball =
  {
    center : Vector3<m>;
    radius : float32<m>;
  }

let BallRadius = 0.2f<m>
let list = [ for i in 0..9 ->  { center = { X = BallRadius + (float32 i) * BallRadius * 2.0f; Y = 0.0f<m>; Z = 0.0f<m>}; radius = BallRadius;} ]

這對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM