将十进制转换为精度较低的整数作为字符串

时间:2012-11-06 08:43:15

标签: c# formatting

因为有些人显然认为千兆字节作为小数是准确存储可用存储空间的好方法,所以我现在有以下代码将其转换为字节表示:

Convert.ToString(Convert.ToInt64(Math.Floor(someDecimal * 1024 * 1024)));

现在虽然这有效(as-in返回预期结果),但它并不完全优雅。

有没有更优雅的方式来进行这种转换? (发言是必要的)。

3 个答案:

答案 0 :(得分:5)

你为什么不用这个:

var result = ((Int64)(someDecimal * 1024 * 1024 * 1024)).ToString();

当然,这应该用一些辅助方法封装。你不希望在你的代码中撒上这些东西。

答案 1 :(得分:2)

尝试:

(someDecimal * Math.Pow(1024,3) - 0.5m).ToString("F0")

答案 2 :(得分:0)

考虑将此行移至单独的方法(例如gigabytesToBytes(someDecimal))。这将使您的意图更加清晰,如果您发现错误 - 就像在评论中发现的错误 - 您可以在一个地方修复它们。