英文:
C# - Restrict double variable to two decimal places
问题
我正在使用Unity引擎制作游戏。
我正在使用一个双精度变量,希望它只显示到小数点后两位。
public double nos = 0;
例如:如果nos
等于17.2369...;
我希望它显示nos
为17.23;
附注:我不想四舍五入或其他处理方式。
如何实现这一点?
英文:
I am using Unity Engine to make a game.
I am using a double variable and want it to only display the number till two decimal places.
public double nos = 0;
For eg: if nos = 17.2369...;
I want it to display nos = 17.23;
P.S.: I don't want to round it off or smt.
How to make that happen?
答案1
得分: 0
你说得对,字符串格式化也进行了一些四舍五入。那么应该这样做:
double num = 15.345324;
num = Math.Truncate(100 * num) / 100;
// num = 15.34
使用10的幂次方作为小数位数的因子(这里是100)。
100 -> 2位小数
1000 -> 3位小数
等等。
编辑:更一般的方式可以这样做
double num = 12.3456789;
double numOfDecimals = 2;
num = Math.Truncate(Math.Pow(10, numOfDecimals) * num) / Math.Pow(10, numOfDecimals);
英文:
You are right, string formatting also does some rounding.
This should work then:
double num = 15.345324;
num = Math.Truncate(100 * num) / 100;
// num = 15.34
Use 10 to the power of decimal places (here: 100) you want to have as factor.
100 -> 2dps
1000 -> 3dps
etc.
Edit: In a more general way one could do sth like this
double num = 12.3456789;
double numOfDecimals = 2;
num = Math.Truncate(Math.Pow(10, numOfDecimals) * num) / Math.Pow(10, numOfDecimals);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论