C# 在Javascript中像在c中一样强制转换为浮动

C# 在Javascript中像在c中一样强制转换为浮动,c#,javascript,rounding,floating-point-precision,C#,Javascript,Rounding,Floating Point Precision,c代码: js代码: float floatA = 4; float floatB = 17; float floatC = floatA / floatB; //0.235294119 double doubleA = 4; double doubleB = 17; double doubleC = doubleA / doubleB; // 0.23529411764705882 float res = (float)doubleC; // 0.235294119 为什么浮动c&res为

c代码:

js代码:

float floatA = 4;
float floatB = 17;
float floatC = floatA / floatB; //0.235294119

double doubleA = 4;
double doubleB = 17;
double doubleC = doubleA / doubleB; // 0.23529411764705882
float res = (float)doubleC; // 0.235294119
为什么浮动c&res为0.235294119而不是0.235294118

c中的doubleC与js中的c相同。
基本上,我需要在javascript中对数字进行四舍五入,就像c does double将浮点作为浮点一样,4/17=0.23529411852359771728515625。四舍五入到9位,即0.235294119

作为双精度,4/17=0.235294117647058820264049927573068998754024505615234375。四舍五入到9位,即0.235294118


这是四舍五入的结果。

似乎1176四舍五入时应该是118,而不是119,因此问题可能是C语言,而不是javascript语言,这似乎是正确的。差异是100亿分之一。你在测量什么,需要这样的精度?无论是C还是Javascript都不能保证每次运行的浮点计算都是相同的;只要保持每次计算的最小精度,两种语言都可以根据自己的喜好自由改变实际结果。你应该问的问题不是如何确保结果是相同的(你不能这样做),而是如何确保我的程序在百亿分之一的错误被引入时正常工作?
var a = 4;
var b = 17;
var c = a / b; // 0.23529411764705882
var res = (a / b).toPrecition(9); // 0.235294118