MexicanCustard 发表于 2015-10-2 16:42:03

用C#创建2X,6G13.6 Fortran格式的简单方法

我正在将一个输出写入一个需要严格格式的文件,即Fortran格式2X,6G13.6。这里有人以前用Fortran编写过代码,并且知道如何在.net中复制吗
根据我在这里获得的信息,使用描述符Gw的格式。其中w是总字段宽度,d是小数点右侧的位数。如果该值大于0.1,但不太大,无法放入字段,则使用字段宽度w以十进制格式(类似于F描述符)写入该数字,并输出d个有效数字。这个数字后面有四个空格。否则,它的行为与Ew完全相同。d描述符。2X表示以2个空格开始行,6在G之前表示以G13.6格式输出6个值
公共静态字符串写格式(双值)
{
//值为0时的特殊输出条件
如果(值==0)
{
返回“0.000000”。左键(13)
}
//最大字段宽度大于max int,因此请检查max int
如果(值>0.1&&value
{
字符串temp=value.ToString()
//首先检查数字是否没有小数。
if(temp.IndexOf(“.”===-1)
{
var长度=温度长度
如果(值
{
如果(长度>=6)
{
返回(值为.ToString(“G6”)+).PadLeft(13)
}
var pad=7-长度
返回(value.ToString()+”。PadRight(pad,'0')+“”)。padlight(13)
}
}
}
返回值.ToString(“#.#0.0e+00”).PadLeft(13)
}

输出应该是什么样子https://farm6.staticflickr.com/5691/21707335858_cc00624d4a_b.jpg“alt=”“width=“800”height=“700”class=“bbc_img已调整大小”>
**** Hidden Message *****

高楼粽子 发表于 2015-10-5 10:36:10

如果我没记错的话,6G13.6。我早就忘记了Fortran和Cobal
G格式化,(.6)使用6位有效数字,(G前面的6位)在右侧填充6个空格,(13)总宽度/填充前面,以形成这么多的总空格
您需要涵盖多种格式类型还是只涵盖“G”格式?是格式化变量还是输出总是遵循单一规范?

黑翼 发表于 2015-10-5 11:04:03

我真的只需要它的G,因为其中95%都是(2X,6G13.6)格式。我可能错了,但我阅读规范的方式是2X表示行的前两个字符是空格,然后G13.6格式重复6次。最多有13位数字,有6位有效数字。因此,10的值为10.0000,190的值为190.000。规范中还有其他要求。
我想我只需要提出每个案例,然后为每个案例编写代码。然而,当我尝试这样做时,我通常会感到困惑,并认为可能有人以前遇到过它,并且有现成的解决方案。
页: [1]
查看完整版本: 用C#创建2X,6G13.6 Fortran格式的简单方法