一切都从这些简单的代码行开始:
string s = "16.9";
double d = Convert.ToDouble(s);
d*=100;
Run Code Online (Sandbox Code Playgroud)
结果应该是1690.0,但事实并非如此.d等于1689.9999999999998.我想要做的就是将一个double加倍到小数位分隔符后的2位数值.这是我的功能.
private double RoundFloat(double Value)
{
float sign = (Value < 0) ? -0.01f : 0.01f;
if (Math.Abs(Value) < 0.00001) Value = 0;
string SVal = Value.ToString();
string DecimalSeparator = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator;
int i = SVal.IndexOf(DecimalSeparator);
if (i > 0)
{
int SRnd;
try
{
// ????? ??????? ????? ???? ?????????? ??????????
SRnd = Convert.ToInt32(SVal.Substring(i + 3, 1));
}
catch
{
SRnd = 0;
}
if (SVal.Length > i + 3) …Run Code Online (Sandbox Code Playgroud) 我有一个要在浏览器(javascript)中使用的ActiveX对象。
我要调用一个函数。其原型是:
function TOPOSFiscalPrinter.DirectIO(Command: Integer; var pData: Integer;
var pString: WideString): Integer;
Run Code Online (Sandbox Code Playgroud)
因此,该函数返回三个值:结果代码,pData和pString;
在javascript中,该函数不会更新变量pData和pString;
function test()
{
var d=1, s="DIRECIO:";
var code = opos.DirectIO(1024, d, s);
alert(d); alert(s);
}
Run Code Online (Sandbox Code Playgroud)
变量d和s不更新。它们必须是d = 0和s =“ ED123456”;
如何从在JavaScript中返回多个值的函数中读取数据?
编辑
显然,Javascript总是按值传递参数,而不是按引用传递参数。
我可以做些什么来通过Java引用引用传递值,或者我将不得不更改设计以仅依赖于按值传递的参数和返回值。