C#保留2位小数几种场景总结

场景1:

  C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.25.可不可以刚好保留到最后一位不是0的位置?
默认保留2位,如果真的有3位小数,就保留3位,有4位就保留4位。

先说一下ToString("0.00##")中0和#的区别:
  0 代表占位的。如果ToString("0.00") 这样就是保留两位小数,无论小数有多少位或者无小数,结果都是两位小数。例如 1.1234 那么结果是1.12。如果是1.2 那么结果会补零,为1.20。
  # 代表后面的不是零就被保留,如果是0就去掉。例如ToString("0.##") 那么1.20的话结果是1.2。

对于场景1的问题,默认有两位就是00,其它的如果大于两位就不是零就保留的话,可以下面这样写:

double dd = 1.2530;
string ret = dd.ToString("0.00####"); // 1.253

场景2:

  根据国际惯例,有时候我们需要对超出的位数“四舍五入”。用C# 实现保留两位小数的方法有很多,常用的总结如下:

1、Math.Round(0.333333,2);//按照四舍五入的国际标准
2、double dbdata=0.335333; string str1=String.Format("{0:F}",dbdata);//默认为保留两位
3、float i=0.333333; int j=(int)(i * 100); i = j/100;
4、decimal.Round(decimal.Parse("0.3333333"),2)
5、private System.Globalization.NumberFormatInfo nfi = new System.Globalization.NumberFormatInfo();

  float test=0.333333f;

  nfi.NumberDecimalDigits=2;

  string result=test.ToString("N", nfi);

6、string result= String.Format("{0:N2}",Convert.ToDecimal("0.333333").ToString()); 
7、Convert.ToDecimal("0.33333333").ToString("0.00");

游标遍历所有数据库循环执行修改数据库的sql命令

MSSQL数据库服务器上有很多类似的数据库,需要将这些数据库统一修改其中的某些表或者某些命令,那么就会想到用游标来遍历。

先来说思路:

1,首先需要查询出所有的数据库;

  select [name] from [master].[dbo].[sysdatabases] order by [name]; --查询MSSQL中所有数据库名称

2,用游标CURSOR来集合查询出来的数据库名称集合,来实现循环遍历每一个数据库;

3,在循环遍历每一个数据库名称时,通过拼接sql语句来实现命令字符串,并且用EXEC执行命令;

注意:可以根据个人需要对数据库名称进行筛选。

代码示例如下:

DECLARE @sysname sysname; --数据库名称变量DECLARE My_Cursor CURSOR --定义游标
FOR (select [name] from [master].[dbo].[sysdatabases]) --查出所有的数据库名称的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor INTO @sysname; --读取下一行/第一行数据并存放在变量值中
WHILE @@FETCH_STATUS = 0 --是否可继续执行循环状态BEGIN--PRINT @sysname;DECLARE @sql nvarchar(max); --sql命令字符串SET @sql='USE ['+@sysname+'];';--Beginif (CHARINDEX('_QtxApp', @sysname)>0) --我只需要修改名字包含_QtxApp的数据库beginSET @sql+='select * from dbo.Access_token'; --自定义的sql命令PRINT @sql;endelsebeginPRINT @sql;end--EndEXEC(@sql); --执行字符串sqlFETCH NEXT FROM My_Cursor INTO @sysname; --读取下一行数据并存放在变量值中END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO

原生js轮盘抽奖实例分析(幸运大转盘抽奖)

效果图:

所需图片素材:

这张图是pointer.png的位置的。

turntable-bg.jpg这张是转盘背景图,在背景位置。

这张是turntable.png位置的。

需要这三张图片,如果要实现一下,直接另存这三图片引入进去即可。如果不会请修改成对应的图片名字,放到同一个文件下。

基本原理:

1,通过设置CSS样式的position属性,z-index属性等实现背景图,转盘图与指针图的层叠摆放;

2,通过设置元素style.transform = "rotate(0deg)"实现旋转效果。

完整代码如下:

 1 <!DOCTYPE html>2 <html lang="en">3 <head>4     <meta charset="UTF-8">5     <meta name="description" content="">6     <meta name="author" content="熊仔其人">7     <title>转盘抽奖效果</title>8     <!-- 这里是css部分 -->9     <style>
10         #bg {
11             width: 650px;
12             height: 600px;
13             margin: 0 auto;
14             background: url(turntable-bg.jpg) no-repeat;
15             position: relative;
16         }
17
18         img[src^="pointer"] {
19             position: absolute;
20             z-index: 10;
21             top: 155px;
22             left: 247px;
23         }
24
25         img[src^="turntable"] {
26             position: absolute;
27             z-index: 5;
28             top: 60px;
29             left: 116px;
30             transition: all 4s;
31         }
32     </style>
33 </head>
34 <body>
35     <!-- 这里是HTML结构部分 -->
36     <div id="bg"><img src="pointer.png" alt="pointer"><img src="turntable.png" alt="turntable"></div>
37     <!-- 这里是js部分 -->
38     <script>
39         var oPointer = document.getElementsByTagName("img")[0];
40         var oTurntable = document.getElementsByTagName("img")[1];
41         var cat = 51.4; //总共7个扇形区域,每个区域约51.4度
42         var num = 0; //转圈结束后停留的度数
43         var offOn = true; //是否正在抽奖
44         oPointer.onclick = function () {
45             if (offOn) {
46                 oTurntable.style.transform = "rotate(0deg)";
47                 offOn = !offOn;
48                 ratating();
49             }
50         }
51         //旋转
52         function ratating() {
53             var timer = null;
54             var rdm = 0; //随机度数
55             clearInterval(timer);
56             timer = setInterval(function () {
57                 if (Math.floor(rdm / 360) < 3) { rdm = Math.floor(Math.random() * 3600); }
58                 else {
59                     oTurntable.style.transform = "rotate(" + rdm + "deg)";
60                     clearInterval(timer);
61                     setTimeout(function () {
62                         offOn = !offOn;
63                         num = rdm % 360;
64                         if (num <= cat * 1) { alert("4999元"); console.log("rdm=" + rdm + ",num=" + num + "," + "4999元"); }
65                         else if (num <= cat * 2) { alert("50元"); console.log("rdm=" + rdm + ",num=" + num + "," + "50元"); }
66                         else if (num <= cat * 3) { alert("10元"); console.log("rdm=" + rdm + ",num=" + num + "," + "10元"); }
67                         else if (num <= cat * 4) { alert("5元"); console.log("rdm=" + rdm + ",num=" + num + "," + "5元"); }
68                         else if (num <= cat * 5) { alert("免息服务"); console.log("rdm=" + rdm + ",num=" + num + "," + "免息服务"); }
69                         else if (num <= cat * 6) { alert("提交白金"); console.log("rdm=" + rdm + ",num=" + num + "," + "提交白金"); }
70                         else if (num <= cat * 7) { alert("未中奖"); console.log("rdm=" + rdm + ",num=" + num + "," + "未中奖"); }
71                     }, 4000);
72                 }
73             }, 30);
74         }
75     </script>
76 </body>
77 </html>

css和HTML代码不多,主要是为了实现过渡设置,还有为了实现层叠而使用position定位,让元素脱离文档流,js代码在于获取元素和事件的点击,点击指针会旋转,所以要给指针加个点击事件,然后是判断旋转是否停止,如果没有就点击也不能调用函数ratating(),这个函数执行转盘的旋转和判断指针停在什么位置,然后弹出相应的内容,而函数里实现旋转的过程,是获取转盘的元素,然后使用js控制css的属性-transform:rotate(),我们不是使用过这个属性在css里直接使它实现旋转的效果吗?就是和伪类选择器:hover及过渡属性一起使用去实现的,那么因为css实现不了数字的运算和鼠标点击,所以让js去实现且控制css属性,实现到点击旋转这个功能,然而定时器的使用暂时不说,思路就是使用js实现数字的运算和鼠标的点击及css属性的控制达到旋转的效果。
Math.random()是随机数的生成,Math.floor()向下取整。

javascript中的typeof和类型判断

typeof

ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String。我们都知道可以使用typeof运算符求得一个变量的类型,但是对引用类型变量却只会返回object,也就是说typeof只能正确识别基本类型值变量。

var a = "abc";
console.log(typeof a); // "string"
var b = 123;
console.log(typeof b); // "number"
var c = true;
console.log(typeof c); // "boolean"
var d = null;
console.log(typeof d); // "object"
var f = undefined;
console.log(typeof f); // "undefined"
var g;
console.log(typeof g); // "undefined"console.log(typeof x); // "undefined"

您也许会问,为什么 typeof 运算符对于 null 值会返回 "object"。这实际上是 JavaScript 最初实现中的一个错误,然后被 ECMAScript 沿用了。现在,null 被认为是对象的占位符,从而解释了这一矛盾,但从技术上来说,它仍然是原始值。

最后一个比较奇怪,typeof一个不存在的变量x居然返回了"object"而不是"undefined"。

我们在来如下代码:

var a = function() { };
console.log(typeof a); // "function"
var b = [1,2,3];
console.log(typeof b); // "object"
var c = { };
console.log(typeof c); // "object"  

对于数组和对象都返回"object",因此我们日常开发中一个常见需求就是如何判断变量是数组还是对象。

类型判断

类型判断,一般就是判断是否是数组,是否是空对象。这是针对这个需求,我日常用过或见过的判断方法

判断是否是数组

有数组:var a = [1,2,3,4,5];

方法一:

toString.call(a); // "[object Array]"

方法二:

a instanceof Array; //true

方法三:

a.constructor == Array; //true

第一种方法比较通用,也就是Object.prototype.toString.call(a)的简写。

instanceofconstructor判断的变量,必须在当前页面声明的,比如,一个页面(父页面)有一个框架,框架中引用了一个页面(子页面),在子页面中声明了一个a,并将其赋值给父页面的一个变量,这时判断该变量,Array == object.constructor会返回false

var a = [1,2,3,4,5];
console.log(toString.call(a)); // "[object Array]"
console.log(a instanceof Array); //true
console.log(a.constructor == Array); //true

判断是否是空对象

有变量:var obj = {};

方法一:

JSON.stringify(obj); // "{}"

通过转换成JSON对象来判断是否是空大括号

方法二:

if(obj.id){ //如果属性id存在....}

这个方法比较土,大多数人都能想到,前提是得知道对象中有某个属性。

方法三:

function isEmptyObject(e) { var t; for (t in e) return !1; return !0 } //trueisEmptyObject(obj); //falseisEmptyObject({ "a":1, "b":2});

这个方法是jQuery的isEmptyObject()方法的实现方式。

转载于:https://www.cnblogs.com/cjm123/p/8905206.html

C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断...相关推荐

  1. java保留小数_java保留两位小数4种方法

    java保留两位小数4种方法 方法一:String的format方法(推荐) double f = 111231.5585; System.out.println(String.format(&quo ...

  2. java保留两位小数怎么_java保留两位小数4种方法

    java保留两位小数4种方法 Java中保留小数有四种方法,如下: public class Format { double f = 23065.57845; public void m1() { B ...

  3. java保留两位小数4种方法,java保留两位小数4种方法,java两位小数4种

    java保留两位小数4种方法,java两位小数4种 java保留两位小数4种方法 方法一:String的format方法(推荐) double f = 111231.5585; System.out. ...

  4. java保留两位小数 四种方式

    方式一:四舍五入 double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDeci ...

  5. Python 保留两位小数几种方法

    一: 保留两位小数 且 做四舍五入处理 四舍六入五成双, 四舍六入五凑偶的意思, 根据百度词条的解释如下: (1)当精确位后面一位的数字是1-4的时候,舍去 (2)当精确位后面一位的数字是6-9的时候 ...

  6. java double类型保留两位小数4种方法

    4种方法,都是四舍五入,例:import java.math.BigDecimal;import java.text.DecimalFormat;import java.text.NumberForm ...

  7. 小数点后保留2位小数的正则表达式

    Write By Monkeyfly 以下内容均为原创,如需转载请注明出处. 前提 今天同事问我,这个正则表达式是什么意思?(如下所示) ^(([1-9]{1}\\d*)|([0]{1}))(\\.( ...

  8. 用python计算矩形面积结果四舍五入保留两位小数_你还在计算器开平方?太low了吧,学霸考场都用这种方法开平方...

    一般情况下,我们生活中遇到一个需要开平方的数时,第一反应就是拿手机计算器计算,但考试时怎么做?不让带计算器,包括具有计算功能的手表都严禁携带.那这个时候怎么做呢?手算开平方就是一种随时适用的方法,无论 ...

  9. jq设置保留两位小数_js保留两位小数方法总结

    本文是小编针对js保留两位小数这个大家经常遇到的经典问题整理了在各种情况下的函数写法以及遇到问题的分析,以下是全部内容: 一.我们首先从经典的"四舍五入"算法讲起 1.四舍五入的情 ...

最新文章

  1. Overleaf-LaTex表格制作
  2. 7-12 两个数的简单计算器 (C语言)
  3. VB 调用 QuickTestpro 脚本
  4. java一般方法有哪些方法有哪些方法_Java代码优化有哪些方法?
  5. Perl的浅拷贝和深度拷贝
  6. 使用java实现数字滤波器
  7. 实验11 链表 程序1奇数值结点链表
  8. Moss网站在不同服务器的迁移
  9. Windows下CMake的下载与安装详解
  10. java数据采集_基于Java的数据采集(终结篇)
  11. 最新行政区划代码省市区数据库-行政区域查询API
  12. dell无法启动计算机,戴尔电脑装系统蓝屏无法启动怎么办
  13. win10计算机远程连接命令,详细教你win10设置远程桌面连接命令
  14. HTML篇三——(1)
  15. phpstorm License Server激活 官网下载版本直接激活
  16. vue_2.0_fyf
  17. 实现一个div的背景颜色从左到右慢慢出现
  18. qq能正常使用 网页打不开的解决办法
  19. 教你玩Robocode(1)
  20. RGB to CVBS/S-Video

热门文章

  1. J2EE高级开发框架小课程之Spring框架1——Spring创建三种方式:使用无参构造器创建对象(bean标签的方式),使用静态方法创建对象,使用实例方法创建对象(非静态方法)
  2. 解Invalid character found in the request target.
  3. CSS3 - 新增选择器
  4. python串口控制8通道继电器方法笔记
  5. 7-14 凯撒密码 (10 分)
  6. 34%的出轨率是怎么算的
  7. 未授权下载导致的信息泄露
  8. 出现VMware Workstation 与 Device/Credential Guard 不兼容.在禁用 Device/Credenti的一种可能
  9. 绿盟于旸:让阿里安娜火箭爆炸的缓冲区溢出 linkboy语录:tk出品必是精品呵呵
  10. 小麦苗的微信公众号开通啦,欢迎大家扫码关注