float f= 931340.31f;
Console.WriteLine(f.ToString("#,###,##0.00"));

返回 931,340.30 ,float 10w以上2位小数,就会掉精度,改成double,没有源代码  

ilasm和ildasm要相同Framework才行 framework2反编译的,不能用1.1编译通过

1.1的代码 ,没装vs2003 ,ildasm 在 sc_vs.net_2003_enar_cd2.iso

\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin 下,单独解压可以用

Model.Common,Data.Common,WebHr,Web.PageControl ,找到所有BasicSalary 关键字 float32改成float64 (这个double )

附近Null2Float改成Null2Double,NullFloat改成NullDouble

Model.Common 缺NullDouble 方法

在NullFloat附近添加

    .method public hidebysig static float64
NullDouble(object 'value') cil managed
{
// 代码大小 16 (0x10)
.maxstack 2
IL_0000: ldarg.0
IL_0001: ldc.r8 0.0
IL_000a: call float64 Penseesoft.Web.Model.Utility.NullUtil::NullDouble(object,
float64)
IL_000f: ret
} // end of method NullUtil::NullDouble .method public hidebysig static float64
NullDouble(object 'value',
float64 defaultValue) cil managed
{
// 代码大小 38 (0x26)
.maxstack 1
.locals init (float64 V_0)
IL_0000: ldarg.0
IL_0001: call bool Penseesoft.Web.Model.Utility.NullUtil::IsNullObject(object)
IL_0006: brfalse.s IL_000c IL_0008: ldarg.1
IL_0009: stloc.0
IL_000a: br.s IL_0024 .try
{
IL_000c: ldarg.0
IL_000d: call float64 [mscorlib]System.Convert::ToDouble(object)
IL_0012: stloc.0
IL_0013: ldloc.0
IL_0014: call bool [mscorlib]System.Double::IsNaN(float64)
IL_0019: brfalse.s IL_001d IL_001b: ldarg.1
IL_001c: stloc.0
IL_001d: leave.s IL_0024 } // end .try
catch [mscorlib]System.Exception
{
IL_001f: pop
IL_0020: ldarg.1
IL_0021: stloc.0
IL_0022: leave.s IL_0024 } // end handler
IL_0024: ldloc.0
IL_0025: ret
} // end of method NullUtil::NullDouble

  

callvirt instance float32 [Model.Common]Penseesoft.Web.Model.StaffInfo::get_BasicSalary()
stloc.s V_9
 ldloca.s V_9
 ldstr "#,##0.00"
call instance string [mscorlib]System.Single::ToString(string)

另外.net调用过程,压堆栈,会压一个变量 V_9

变量申明在 函数申明后

.locals init (int32 V_0,
class [System.Web]System.Web.UI.WebControls.Panel V_1,
class [Model.Common]Penseesoft.Web.Model.StaffInfo V_2,
class [Model.Payroll]Penseesoft.Web.Model.Payroll.PayTermsInfo V_3,
int32 V_4,
class [System.Data]System.Data.DataRow V_5,
class [System.Web]System.Web.UI.WebControls.Panel[] V_6,
int32 V_7,
valuetype [mscorlib]System.DateTime V_8,
float32 V_9,
float64 V_10)

如果本来V_9 是float32,方法改成double,如果不新增float64 V_10 ,改成V_10的话,float, ilasm可以编译过,运行会出一个很大数字。

ilspy + Reflexil ,有Verfiy菜单项可以用下,看编译的dll是否有问题

bat文件

set ilasm=%windir%\Microsoft.NET\Framework\v1.1.4322\ilasm /dll /QUIET

%ilasm% Web.PageControls.il /res:Web.PageControls.res
%ilasm% WebHr.il /res:WebHr.res
%ilasm% Data.Common.il /res:Data.Common.res
%ilasm% Model.Common.il /res:Model.Common.res

pause

维护没有源代码,float改成double的更多相关文章

  1. OpenMesh 将默认的 float 类型改为 double 类型

    OpenMesh 中默认的数据类型都是 float 类型的,如果要将其默认的 float 类型改为 double 类型,可以这么做: #include <OpenMesh/Core/Mesh/P ...

  2. vs2015 去除 git 源代码 绑定,改成向tfs添加源码管理

    除了下文的方法是将源码管理从git改成tfs之外,还要做以下几步即可 向tfs添加源码 打开源码管理(管理连接),双击打开你要向其中添加的tfs连接 选中该解决方案,右键 将解决方案添加到源码管理 嵌 ...

  3. 在项目中随手把haseMap改成了currenHaseMap差点被公司给开除了。

    前言 在项目中随手把haseMap改成了currenHaseMap差点被公司给开除了. 判断相等 字符串判断相等 String str1 = null; String str2 = "jav ...

  4. 就因为把int改成Integer,第2天被辞了

    本文节选自<设计模式就该这样学>之享元模式(Flyweight Pattern) 1 故事背景 一个程序员就因为改了生产环境上的一个方法参数,把int型改成了Integer类型,因为涉及到 ...

  5. python学习——将while循环改成函数

    笨办法学python第33节 这一节主要学习内容是while循环,记录内容为将while改成函数,首先源代码如下: i = 0 numbers = [] while i < 6: print & ...

  6. Kendo Web UI Grid数据绑定,删除,编辑,并把默认英文改成中文

    Kendo Web UI 是个不错的Jquery框.可惜老外写的,很多都是默认的英文,当然我们也可以设置成中文,接下来,我们就看看Grid是如何实现的数据绑定(Kendo Grid数据绑定实现有很多方 ...

  7. 维护没有源代码的遗留 Java 项目

    维护没有源代码的遗留 Java 项目 Give Those Sweets Some Love --> 有时你可能不得不修改一些只有 Jar 和 .class 的 Java 项目. 要修改 Jar ...

  8. 复利计算5.0(改成Java版本)与 单元测试

    //由于C语言版本不方便单元测试,所以改成了java版本,部分代码如下:import java.util.Scanner; public class FuLi{ public static void ...

  9. 如何把传统写法改成框架形式 es6

    每天思考的问题: 1.什么是组件 2.什么是插件 3.如何把传统写法改成框架形式 4.前端为什么要使用框架,使用框架的好处是什么? Image.png http://www.zhihu.com/que ...

随机推荐

  1. JavaScript之substring()方法讲解

    定义和用法 substring() 方法用于提取字符串中介于两个指定下标之间的字符. 语法 stringObject.substring(start,stop) 参数 描述 start 必需.一个非负 ...

  2. .NET设计模式(5):工厂方法模式(Factory Method)(转)

    工厂方法模式(Factory Method) ——.NET设计模式系列之五 Terrylee,2004年1月2日 概述 在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实 ...

  3. HTTP报头详解

    HTTP头字段包括4类:      general-header ; 通用报头      request-header ; 请求报头      response-header ; 响应报头      ...

  4. oracle OVER(PARTITION BY) 函数

    OVER(PARTITION BY)函数介绍 开窗函数               Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返 ...

  5. C++ 第一次上机作业

    今天完成了C++第一次上机作业,感觉比较简单. 题目: 求2个数或3个正整数中的最大数,用带有默认参数的函数实现. 对3个变量按由小到大顺序排序,要求使用变量的引用. 编写一个程序,用同一个函数名对几 ...

  6. 【转】VC++与MySQL数据库的连接

    原文地址:http://blog.csdn.net/nupt123456789/article/details/8043091 1.MySQL数据库的安装 你可以从MySQL的官网上或者从如下地址下载 ...

  7. WPA/WAP2wifi 密码破解笔记

    前言: 相对于前一段时间脆弱的WEP路由器而言,当今的路由器加密方式也大都改变为WPA/WPA2,使得无线路由器的破解难度增加.虽然如此,但还是有很多漏洞层出不穷,如WPS.退一步来说,即使加密算法无 ...

  8. 15 things to talk about in a healthy relationship

    15 things to talk about in a healthy relationship男女交往中可以谈论的15个话题 1. Your Daily Activities 1. 你的日常活动 ...

  9. OneAPM:打造云时代的应用性能管控平台

    在2015年大连市CIO信息化年会的现场,记者与OneAPM东北区总经理佟维针对云时代的企业系统应用性能的管理控制进行了简短交流.北京蓝海讯通科技股份有限公司,即OneAPM是中国基础软件领域的新兴领 ...

  10. ubuntu下搭建cocos2dx编程环境-中

        上篇文章里讲了在ubuntu下部署cocos2d-x开发环境,这篇文章主要示范在ubuntu下部署cocos2d-x android开发环境.分开写就是因为我看很多文章里都将这两件事情混杂着写 ...