在F#中将整数转换为浮点数而不四舍五入

3

我在F#中有如下代码:

let fun a b=
  let mutable x1=float 0
  <some stuff>
   x1r<- -a/b

let main argv
    let  a=Int32.Parse(Console.ReadLine()) 
    let  b=Int32.Parse(Console.ReadLine())
fun a b

我在将-a/b转换成浮点数时遇到了问题。我尝试了旧式的*1.0f以及其他几种技巧,但都没有奏效。有没有办法像这样进行转换,或者我必须用另一种方式编写它?


你想要做什么? - FoggyFinder
顺便说一下,你的代码无法编译 - 请提供 MCVE - FoggyFinder
我尝试将-a除以a。这两个变量都是整数。 - Saper9
如果你想避免使用浮点数时的四舍五入或数字精度问题,你应该使用DecimalRational数值类型。 - s952163
1个回答

3
您的问题不是很清楚,但在我看来,您正在将两个int相除,并期望将结果转换为float保留小数部分。但是,当您将两个int相除时,会返回一个int,将其转换为float无法恢复小数部分。
您应该在执行除法之前将a和b都转换为float,即(float -a) / (float b),或者从控制台中读取float值,使用Console.ReadLine() |> float。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接