在Go中将货币从float转换为整数的最佳方法是什么?------------添加了问题的解释------------为了稍微扩展我的问题,以下是我认为通过添加舍入值0.004(对于2位小数货币)解决的“问题”的示例。据我所知,外部值存储为例如。RDBMS中的十进制、double、货币需要作为float“导入”到Go。为了执行计算,然后需要将它们转换为整数,或者至少这是一种方法。在下面的示例中,fVal1模拟从数据库导入的金额。要对其进行计算,我想将其转换为整数。在我看来,最简单的方法是添加一个舍入数字,如图所示。示例代码:varfVal1float64=19.08varf100flo
在Go中将货币从float转换为整数的最佳方法是什么?------------添加了问题的解释------------为了稍微扩展我的问题,以下是我认为通过添加舍入值0.004(对于2位小数货币)解决的“问题”的示例。据我所知,外部值存储为例如。RDBMS中的十进制、double、货币需要作为float“导入”到Go。为了执行计算,然后需要将它们转换为整数,或者至少这是一种方法。在下面的示例中,fVal1模拟从数据库导入的金额。要对其进行计算,我想将其转换为整数。在我看来,最简单的方法是添加一个舍入数字,如图所示。示例代码:varfVal1float64=19.08varf100flo
当将float转换为int时,小数点将被丢弃。什么是一种干净的转换方式,以便四舍五入到最接近的整数。x:=int(3.6)应该等于4而不是3。 最佳答案 int(f+0.5)如果>=.5将导致它向上舍入 关于go-如何在将float转换为int时四舍五入到最近的int,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/35115868/
当将float转换为int时,小数点将被丢弃。什么是一种干净的转换方式,以便四舍五入到最接近的整数。x:=int(3.6)应该等于4而不是3。 最佳答案 int(f+0.5)如果>=.5将导致它向上舍入 关于go-如何在将float转换为int时四舍五入到最近的int,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/35115868/
我遇到了以下问题:我的golang程序将一些信息转换为JSON。例如,它会产生以下json:{"value":40,"unit":"some_string"}问题是值的“输入”是40.0,并且编码会去除尾随零。如果读取JSON的EPL能够在没有.0的情况下将40读取为float,那就没问题了因此JSON输出应该如下所示:{"value":40.0,"unit":"some_string"}是否有可能“阻止”json.Marshal()删除零?编辑:值必须是一个float 最佳答案 @icza提供了一个很好的答案,但只是为了提供另一种
我遇到了以下问题:我的golang程序将一些信息转换为JSON。例如,它会产生以下json:{"value":40,"unit":"some_string"}问题是值的“输入”是40.0,并且编码会去除尾随零。如果读取JSON的EPL能够在没有.0的情况下将40读取为float,那就没问题了因此JSON输出应该如下所示:{"value":40.0,"unit":"some_string"}是否有可能“阻止”json.Marshal()删除零?编辑:值必须是一个float 最佳答案 @icza提供了一个很好的答案,但只是为了提供另一种
我想将一个float64数字转换为1.003到1003(整数类型)。我的实现只是将float64与1000相乘并将其转换为int。packagemainimport"fmt"funcmain(){varffloat64=1.003fmt.Println(int(f*1000))}但是当我运行该代码时,我得到的是1002而不是1003。因为Go自动将1.003存储为变量中的1.002999...。在Golang上做这种操作的正确方法是什么? 最佳答案 Gospec:Conversions:Conversionsbetweennumer
我想将一个float64数字转换为1.003到1003(整数类型)。我的实现只是将float64与1000相乘并将其转换为int。packagemainimport"fmt"funcmain(){varffloat64=1.003fmt.Println(int(f*1000))}但是当我运行该代码时,我得到的是1002而不是1003。因为Go自动将1.003存储为变量中的1.002999...。在Golang上做这种操作的正确方法是什么? 最佳答案 Gospec:Conversions:Conversionsbetweennumer
既然参数e是int,为什么不返回一个int64呢?有什么特殊原因吗? 最佳答案 2个原因:首先,参数也可能是负数,在这种情况下,结果是0和1之间的小数,所以float64返回值不仅合理而且需要。fmt.Println(math.Pow10(-1))输出(在GoPlayground上尝试):0.1其次,几乎*math的每一个功能包返回float64类型的值,添加一个不会破坏“一致性”的值。[*]很少有异常(exception)包括像Float32frombits()这样的函数和llogb()偏差是合理的。
既然参数e是int,为什么不返回一个int64呢?有什么特殊原因吗? 最佳答案 2个原因:首先,参数也可能是负数,在这种情况下,结果是0和1之间的小数,所以float64返回值不仅合理而且需要。fmt.Println(math.Pow10(-1))输出(在GoPlayground上尝试):0.1其次,几乎*math的每一个功能包返回float64类型的值,添加一个不会破坏“一致性”的值。[*]很少有异常(exception)包括像Float32frombits()这样的函数和llogb()偏差是合理的。