草庐IT

MSVC_EVIL_FLOAT_HACK

全部标签

c++ - 使用 CMake 在 Windows (MSVC) 中查找库

我在尝试链接MSVC中的库时遇到问题。我有一些为发布和调试编译的外部依赖项,并将它们设置在不同的文件夹中(${PROJECT_SOURCE_DIR}/External/Debug/lib和${PROJECT_SOURCE_DIR}/External/Release/lib)。我写了一些FindFoo.cmake模块,作为find_library命令的提示,${EXTERNAL_LIB_DIR}根据${CMAKE_BUILD_TYPE}设置。这项工作在Linux上完美,但在Windows上失败(它总是将EXTERNAL_LIB_DIR路径设置为调试路径)并且由于_ITERATOR_DEB

c++ - 为什么相同的 vsnprintf 代码在 Windows (MSVC) 和 Unix (Clang) 上输出不同

在Unix(Clang3.8.1)上,此代码输出:6:328:a8e在Windows(MSVC19.00.24215.1)上,此代码输出:6:123456:a12345e#include#includestaticstd::stringgetFormattedString(constchar*fmt,va_listap){intcount=vsnprintf(NULL,0,fmt,ap)+1;std::cout有趣的是,它们都得到了正确的计数,但在我的Linux和OSX机器上,这段代码输出了错误的结果。这是什么原因造成的?我在某处招致了UB吗? 最佳答案

c++ - 使用 MSVC 并发异步写入文件?

目前我正在使用单线程和fseek/fwrite循环将数据保存到一个大文件中。但当然,节省是瓶颈。为了消除这个瓶颈,我想我可以为异步文件写入创建一个线程,但这会阻止下一个迭代线程中的文件访问。有什么方法可以在VisualC/C++中并发异步写入文件吗?(操作系统是Windows) 最佳答案 使用函数:CreateFileMappinghttp://msdn.microsoft.com/en-us/library/windows/desktop/aa366537(v=vs.85).aspx内存将输出文件映射到内存,然后您可以让多个线程同

C# 字符串 float ?

我这里有这段代码:inti=0;StreamReaderre=File.OpenText("TextFile1.txt");stringinput=null;while((input=re.ReadLine())!=null){string[]sites=input.Split('');for(intj=0;j我的问题是这行代码MyArray[i,j]=Convert.ToInt32(sites[j]);它正在转换为int,如何将其转换为float? 最佳答案 试试float.Parse(string)或Double.Parse(s

c# - float.Parse 在小数点和逗号上失败

当我尝试这条线时:floatf=float.Parse(val,System.Globalization.NumberStyles.AllowDecimalPoint|System.Globalization.NumberStyles.AllowThousands);其中val是设置为“5.267”且不带引号的字符串,我收到此错误:格式异常:未知字符:。System.Double.Parse(System.Strings、NumberStyles样式、IFormatProvider提供程序)System.Single.Parse(System.Strings,NumberStyles样

用于法国文化的 C# float.tryparse

我有一个用户输入,它可以包含范围从3.06或3,06的浮点值我们所处的文化是法语,因此当用户输入3.06并且我对该值运行float.tryParse时,它​​不会转换为3.06到新变量(类型float)中//inputUsedAmount.ValuefromUIis:3.06floatusedAmount=0.0f;float.TryParse(inputUsedAmount.Value,outusedAmount);//returnsfalse我可以简单地从“.”替换从用户界面输入的金额。到“,”,但是有没有一种优雅/更好的方式通过Culture来做到这一点?谢谢

c# - 转换具有句点而不是逗号的 float ?

我有来自数据库(字符串)表的数据,其中包含文本和价格。我从数据中提取价格,但我的问题是有时我可以将其转换为float价格,有时则不能。我注意到了:Convert.ToSingle(m.Groups[1].Value);它有效,但并不总是有效,因为有时句号是问题所在(它需要一个逗号)。我能做什么?我尝试将“.”替换为“,”,但有时在其他PC上需要使用句号! 最佳答案 您遇到此问题是因为转换会检查您PC的语言。您将需要执行以下操作:Convert.ToSingle(m.Groups[1].Value,CultureInfo.Invari

c# - 将字符串解析为 float C#

我在字符串中有float。有一个问题。数字使用“。”不是“,”作为小数点。此代码无效:MyNumber=float.Parse("123.5");我知道我可以在解析之前使用字符串替换函数来“修复”这个字符串。MyNumber=float.Parse("123.5".Replace('.',',');但是还有其他方法吗? 最佳答案 使用字符串替换非常脆弱,会导致一些错误。改为指定IFormatProvider。例如:MyNumber=float.Parse("123.5",CultureInfo.InvariantCulture);或

c# - 在 C# 中使用 RegEx 验证 float

我正在尝试在WPF中制作一个只有数字的TextBox并且我有以下代码:voidNumericTextBox_PreviewTextInput(objectsender,TextCompositionEventArgse){e.Handled=!IsValidInput(e.Text);}privateboolIsValidInput(stringp){switch(this.Type){caseNumericTextBoxType.Float:returnRegex.Match(p,"^[0-9]*[.][0-9]*$").Success;caseNumericTextBoxType.

c# - 对类实例而不是 float 进行排序时 Array.Sort() 性能下降

如果对float进行排序,C#中的Array.Sort非常快,我需要一些额外的数据来处理这些float,所以我创建了一个简单的类并扩展了IComparable接口(interface)。现在Array.Sort突然慢了3-4倍,这是为什么?我该如何提高性能?演示代码:usingSystem;usingSystem.Diagnostics;usingSystem.Linq;namespaceSortTest{classProgram{staticvoidMain(string[]args){intarraySize=10000;intloops=500;doublenormalFloat