• 从VB.Net到VB6.0要小心,关于使用IIF和log求对数函数(串联的小知识)


             各位,今天发现一个小问题,在这里和大家共享,希望对大家今后的开发有帮助,至少走少弯路,不是深奥的东西,请以轻松的心情看完一下内容:
                            在vb.net中,我们取对数可以用system.math.log函数,但他与VB6.0不同的是.net的求对数支持多态,及log(a)默认以e为底还有log(a,newBase),后者支持变换底数,如system.math.log(8,2) 是以2为底8的对数,但问题是有时我们在对a变量未知时,就有可能处理到a=0的情况,在VB.net中log(0) = "负无穷大" 解决的办法很简单, 如果你想log(0) = 0 (当然这里抛开数学意义来说,我主要是利用他说明问题,其实有时这里log(0) = 0是很有用的,比如解决图表差异太大时画出来的图那些小的数不明显.可以用求对数解决,但有些数会是0……)精练的用一句IIF函数处理 iif(表达式,true,false) 如:
    V=iif(a=0,0,system.math.log(a)) 就可以解决了
    但是碰巧今天回到VB6.0处理以前的一个项目,碰到一个问题就是用了 V=log(a)出现无效的函数处理过程的错误提示,原因是a=0,有什么困难的,那末我又可以用V=iif(a=0,0,log(a)) 让a=0 给我返回0,这样就避免错误了 也出差了阿,错误提示和原来一样阿,原来微软小组在6.0时没有处理异常,而且按照函数处理顺序是一定要计数参数后再传入函数处理,所以本以为自己聪明还是避免不了要处理log(a=0),所以在VB6.0只好老老实实用if  Expresion then ……: else …… :end if至少五句的表达,其实也差不多,占空间而已,所以回到VB6.0大家要小心阿,这也可以看出微软小组的细心,像这些(iif和log)在.net2003就已经都改过来了,也说明了iif不一定对一切简单条件处理都有效,已经处理异常的重要性
    最后补充一点,在vb6.0要换底数可以用 log(Y)/log(X)  处理以X为底Y的对数,因为这时log不支持多态
    证明:

  • 相关阅读:
    Objective-C系列总结之基础知识
    OC自动释放池autoreleasepool介绍
    OC导入框架方式#import、@import的区别
    OC源文件扩展名
    安装好MySQL后就开始学习如何后台创建自己的数据库吧!
    如何修改Eclipse中的快捷键
    安装MySQL的详细步骤
    Eclipse运行错误:Failed to load the JNI shared library的解决办法
    导航栏返回带的数据
    flutter Container
  • 原文地址:https://www.cnblogs.com/same/p/335886.html
Copyright © 2020-2023  润新知