我做了一些研究,找不到它。
我使用浮点值和 .ToString() 和 NumberFormatInfo 来构建一些 GLSL 源代码。
但是 NFI 将 1.0 变为“1”而不是“1.0”,这会导致 GLSL 代码中的整数,并使显卡为隐式整数转换而哭泣。
我不能在没有 NFI 的情况下使用 ToString(),因为它需要国家的标准十进制分隔符。所以在德国这导致 1.5 => "1,5"
如何让 NFI 避免删除尾随零?
我做了一些研究,找不到它。
我使用浮点值和 .ToString() 和 NumberFormatInfo 来构建一些 GLSL 源代码。
但是 NFI 将 1.0 变为“1”而不是“1.0”,这会导致 GLSL 代码中的整数,并使显卡为隐式整数转换而哭泣。
我不能在没有 NFI 的情况下使用 ToString(),因为它需要国家的标准十进制分隔符。所以在德国这导致 1.5 => "1,5"
如何让 NFI 避免删除尾随零?
这应该是诀窍:
.ToString("0.0###############")
如果您想要更少的小数,请删除#
(我已经double
为 16 位的精度输入了足够的小数)
或者,如果您需要指定文化,
.ToString("0.0###############", yourCulture)
您可以设置NumberFormatInfo.NumberDecimalDigits
要显示的零个数。然后,您可以使用此代码显示您的号码:
var nfi = new CultureInfo("en-us").NumberFormat;
nfi.NumberDecimalDigits = 2;
//outputs 1.00
1.ToString("N", nfi);
这应该可以解决问题:
ToString("0.0");